2015-08-20 2 views
0
select a as average,name 
from (select avg(marks) as a,name 
     from marks,student where rollno=roll group by marks.roll); 

ERROR 1248 (42000): Каждая производная таблица должна иметь свой собственный псевдонимПочему каждая производная таблица имеет свой собственный псевдоним?

Я знаю, что исправление. Просто хочу знать, почему я должен использовать псевдоним?

select a as average,name 
from (select avg(marks) as a,name 
     from marks,student where rollno=roll group by marks.roll)xxx; 
+0

Даже если это разрешено, было бы небрежно не называть ваши объекты. Будьте ясны в вашем коде, особенно с MySQL, который будет угадывать вещи, которые он не должен (я смотрю на вас, отсутствует предложение GROUP-BY). – JNevill

+0

Я думаю, что это просто причуда MySQL. – Barmar

ответ

0

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

+0

Синтаксис SQL не требует этого, просто MySQL. – Barmar

+0

Запрос OP включает предложение FROM. –

1

Это просто причуда в дизайне MySQL. В этом случае Oracle и SQL-Server не требуют псевдонима.