2015-08-20 68 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不需要別名。

相關問題