[英]Mysql Left Join return 2 rows except 1
我有 2 張桌子,例如:
表A有數據:
id | name
-----------
1 | nik
表 B 有字段:
id | id_a ( relation 1 to many to table A ) | name
---------------------------
3 | 1 | mark
4 | 1 | den
當我嘗試向每個表發出 sql 請求時,我只有一行
# SQL from table A
SELECT * FROM A
WHERE A.id=1
# result is one line - 1 | nik
SQL 來自表 B
SELECT min(B.id) FROM B WHERE B.id_a = 1
# also return 1 line - 3 | 1 | mark
但是當我嘗試使用 LEFT JOIN 執行 sql-request 時,我得到了 2 行
SELECT count(*) FROM A
LEFT JOIN B ON B.id = ( SELECT min(B.id) FROM B WHERE B.id_a = A.id )
WHERE A.id=1
#will return - 2
我很困惑,無法理解這怎么可能以及 mysql 在這種情況下如何工作。
對不起大家。
解決方案是使用表別名。
SELECT count(*) FROM A
LEFT JOIN B ON B.id = ( SELECT min(b1.id) FROM B as b1 WHERE b1.id_a = A.id )
WHERE A.id=1
在子查詢中添加表別名B as b1
並且一切正常
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.