簡體   English   中英

Mysql 左連接返回 2 行,除了 1

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

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