исключает ли существование звездочки в выборке другие столбцы? - PullRequest
3 голосов
/ 28 сентября 2011

Этот вопрос все о лени ... Я хотел бы сделать что-то вроде этого:

select some_func(some_col), * from my_table

Так что мне не нужно этого делать:

select some_func(some_col), col_1, col_2... col_ad_infinitum from my_table

Есть ли способ заставить первый запрос работать? Это ошибка, которую я получаю при запуске:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* from my_table' at line 1

Ответы [ 4 ]

6 голосов
/ 28 сентября 2011

Вы имеете в виду, что в MySQL ваш первый запрос:

SELECT some_func(some_col), * 
FROM my_table

выдает эту ошибку?:

Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с '*' в строке 1


Вы можете изменить свой код на (это не приводит к ошибкам!):

SELECT *, some_func(some_col) 
FROM my_table

или в это, если вы хотите, чтобы сначала вычислялись столбцы:

SELECT some_func(some_col), t.* 
FROM my_table AS t
3 голосов
/ 28 сентября 2011

К сожалению, mysql поддерживает звездочку только при начале списка столбцов (в отличие от всех других БД, с которыми я знаком)

(отредактировано: start не end - упс!)

2 голосов
/ 28 сентября 2011

Изменить порядок выбранных вами параметров:

select *,some_func(some_col) from my_table

В любом случае, как говорит Zen of Python : «Явное лучше, чем неявное». Всегда старайтесь писать поля, которые вы выбираете, и, если это возможно, попробуйте поставить таблицу, из которой они тоже, вы можете использовать псевдоним. Ваше будущее ВЫ будете благодарить.

select t.some_col from my_table t
0 голосов
/ 28 сентября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...