[英]Join - Table doesn't exist - SQL
有人可以向我解釋一下,為什么這會起作用:
select t1.id, t1.age
from mytable t1
join (select age
from mytable
group by age) t2
on t1.age = t2.age
在連接語句的第二部分使用 t1 時,像這樣
select t1.id, t1.age
from mytable t1
join (select age
from t1
group by age) t2
on t1.age=t2.age
給我一個錯誤?
ERROR 1146 (42S02) at line 17: Table '[...].t1' doesn't exist
在我的實際問題中, mytable
對應於一個選擇,所以我想使用t1
以避免將整個select ... from etc
語句復制粘貼到 join 語句的第二部分。
您不能在子查詢中引用外部查詢,因為解析器開始評估子查詢,即在您的情況下
(select age from t1 group by age)
由於表 t1 不存在,它將無法工作。 由於 MySQL 還沒有實現 Commom Table Expressions (CTE)(它會在 Mysql 8.0 版中實現),如果您真的不願意重復代碼,則必須使用派生表或臨時表或視圖。 看這個另一個帖子
我認為最好的選擇就是重復代碼。
不能在 FROM 子句中使用別名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.