![](/img/trans.png)
[英]How to LEFT JOIN table1 ON table2 WHERE table2 row fulfills certain conditions
[英]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';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.