繁体   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