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