Как может я “выбирать *” из таблицы в MySQL, но опускать определенные столбцы?

У меня есть таблица со следующими столбцами:

id,name,age,surname,lastname,catgory,active

Вместо: SELECT name,age,surname,lastname,catgory FROM table

Как может я делать что-то вроде этого: SELECT * FROM table [but not select id,active]

12
задан donL 10 December 2012 в 20:35
поделиться

7 ответов

Единственный способ сделать это, который я знаю, - это перечислить каждый столбец, который вам нужен ... никаких негативных фильтров, о которых я знаю.

select name, age, surname, lastname, category from table
7
ответ дан 2 December 2019 в 04:33
поделиться

вы не можете этого сделать, извините. Вообще-то вы не должны были этого делать, если бы могли - указывать такие вещи явно всегда лучше, предположим, что другой разработчик добавит новое поле, и ваше приложение потерпит неудачу

2
ответ дан 2 December 2019 в 04:33
поделиться

Если в MySql нет специального расширения, вы не сможете этого сделать. Вы либо получаете все, либо должны четко указать, чего хотите. Лучше всего всегда именовать столбцы, так как это не изменит поведение запроса, даже если основная таблица изменится.

1
ответ дан 2 December 2019 в 04:33
поделиться

Вы слишком продвинуты.

Единственный язык данных, который я видел, который поддерживает ваш синтаксис, - это язык D с его конструкцией «... ВСЕ НО ...»:

Википедия - Спецификация языка D

Доступны некоторые справочные реализации , но в основном в учебных целях.

2
ответ дан 2 December 2019 в 04:33
поделиться

Не существует поддерживаемого синтаксиса SQL:

select * from table but not select id,active

Если вам нужны все столбцы, кроме одного или нескольких, вы должны явно определить список нужных столбцов.

1
ответ дан 2 December 2019 в 04:33
поделиться

Вам не следует использовать select * в любом случае. Перечисляйте столбцы, которые вам нужны, и только столбцы, которые вам нужны, это лучшая практика.

1
ответ дан 2 December 2019 в 04:33
поделиться

Я совершенно уверен, что вы не можете. Вероятно, лучший способ, который я могу придумать, это создать SELECT name, age, surname, lastname, category FROM table как представление, а затем просто SELECT * FROM view. В любом случае я предпочитаю всегда выбирать из представления.

Однако, как отмечали другие, если в представление будет добавлен еще один столбец, ваше приложение может потерпеть неудачу. В некоторых системах (PostgreSQL является кандидатом) вы не можете изменить таблицу без предварительного сброса представления, так что это становится немного громоздким.

0
ответ дан 2 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: