簡體   English   中英

如果table1中的table2 id不為空,如何加入table2

[英]How to join to table2 if the table2 id in table1 is not null

我有2張桌子。 如果table1中的table2 id不為null,我想從table1中獲取所有數據,並從table2中獲取所有數據。 我想要2個表,以防用戶有2個地址。

表1
ID,名稱,電話,table2id
table2id可以為null或來自table2的id(如果存在行)

表2
ID,地址,州,國家

我有此查詢,但它不起作用。

SELECT * FROM `table1` JOIN `table2` ON `table1`.`table2id` = `table2`.`id` WHERE `table1`.`id` = '2' AND `table1`.`table2id` IS NOT NULL

從我的閱讀中,我認為我可能需要一個子選擇或IF NOT NULL,但是我不確定如何構造它們。 有任何想法嗎?

也許您的表結構不正確。 最好將前鍵放在表2上,這樣表1的每個記錄可以有N個地址。

像這樣:

表1 :身份證,姓名,電話
表2 :ID,地址,州,國家/地區,表1ID。

這樣,您就可以使用LEFT JOIN從Table1中選擇所有記錄,即使它在Table2中沒有任何相關的地址。

SELECT * 
FROM TABLE1 
LEFT JOIN TABLE2 ON (TABLE1.ID = TABLE2.TABLE1ID)

SELECT結果的記錄中具有Table2字段且值為NULL的記錄沒有任何地址。

試試這個解決它:

SELECT * FROM table1 LEFT JOIN table2 ON table1.table2id = table2.id WHERE table1.id = '2';

您需要為此使用LEFT JOIN ,例如:

SELECT t1.id, t1.name, t1.phone, t2.address, t2.state, t2.country
FROM table1 t1 LEFT JOIN table2 t2 ON t1.table2id = t2.id
WHERE t1.id = 2;

如果沒有匹配的行,它將為t2.*列返回空值。

這是 LEFT JOIN MySQL文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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