簡體   English   中英

加入 - 表不存在 - SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM