2014-09-11 2 views
-1

Я пытаюсь дать имя псевдонима в поле ниже запроса:Алиас Имя для неизвестно ВЫБРАТЬ в MySQL

select x.* as rand_name , @rownum := @rownum + 1 as num from (select t.names 
from mask_data_name_dist t) x, (select 
@rownum := 0) r 

Этот запрос неправильно сог Я пытаюсь дать имя псевдонима rand_name к х *. Есть ли способ, которым я могу это сделать? Примечание: Я не могу касаться суб-запроса, Внутренний запрос является динамическим и часто изменяется. Например, я жестко закодировал простой оператор select. Спасибо заранее.

+0

выберите x.names ... – Strawberry

ответ

0

Вы можете использовать только псевдонимы столбцов в предложениях GROUP BY, ORDER BY или HAVING.

Стандарт SQL не позволяет ссылаться на псевдоним столбца в предложении WHERE. Это ограничение наложено, потому что, когда выполняется код WHERE, значение столбца может еще не определено.

проверка MySQL документации: http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

0

Вы не можете дать псевдоним для оператора *, только один столбец:

SELECT rand_name , @rownum := @rownum + 1 as num 
FROM (SELECT t.names AS rand_name -- Note the alias here. 
     FROM mask_data_name_dist t) x, 
     (SELECT @rownum := 0) r 

EDIT:
Поскольку внутренний запрос не может быть затронуты, то же самое можно было бы применить к внешнему запросу:

select x.names as rand_name , -- note the explicit column name 
     @rownum := @rownum + 1 as num 
from (select t.names mask_data_name_dist t) x, 
     (select @rownum := 0) r 
+0

Спасибо за уры быстрого ответа. Однако моя проблема несколько отличается. Пожалуйста, ознакомьтесь с разделом NOTE в моем вопросе (извините меня, если я не был раньше) – user3360094

+0

@ user3360094 отредактирован. – Mureinik

+0

thxs, но, как я уже говорил, запрос является динамическим, поэтому я не могу его редактировать, поэтому я не могу знать, что такое column_name. Надеюсь, ты поймешь мою просьбу. – user3360094

0

x.* me ans: все столбцы в таблице x. Это коллекция, вы не можете добавить псевдоним в коллекцию в SQL. Добавьте правильное имя столбца в SELECT списка и добавить псевдоним для этого столбца или добавить псевдоним в подзапросе

select 
    x.* 
    , @rownum := @rownum + 1 as num 
from (
    select t.names AS rand_name 
    from mask_data_name_dist t 
) x, 
(
    select 
    @rownum := 0 
) r 
+0

Спасибо за быстрый ответ. Однако моя проблема несколько отличается. Пожалуйста, ознакомьтесь с разделом NOTE в моем вопросе (извините меня, если я не был ясен ранее) – user3360094

+1

В любом случае вы не можете добавить псевдоним в коллекцию (x. *). Сгенерируйте запрос с помощью необходимых псевдонимов. Запросы с заполнителями (*) в списке SELECT могут быть опасными, если вы используете их результаты в других приложениях. Правильный список полей в части SELECT - лучший способ достичь вашей цели. – Pred

Смежные вопросы