繁体   English   中英

正确的SQL查询在PK行不存在可选FK行时返回null(1到无/很多)

[英]Correct sql query to return null when optional FK row doesn't exists for PK row (1 to none/many)

什么是为mysql编写此查询的正确方法是什么(这似乎可行,但似乎很愚蠢)(191是变量的硬代码)

select t1.item_id, t1.item_name, t1.item_desc, t.quantity, t.price 
from (select * from items i where i.item_id = 191) as T1
LEFT JOIN (select * from item_properties ip) as T
on t1.item_id = t.fk_item_id and t1.item_id=191;

T1.item_id为PK,T.fk_item_id为外键(?-仅在父T1.item_id存在的情况下可以存在)

这是我将t.values不存在(并且不能加入)时返回null的方式。

谢谢

如果您想阅读如何在mysql中正确实现联接, 请阅读以下内容

并且仅当两个表中的匹配都对FK和PK使用内部联接时才需要结果

SELECT
    i.item_id, i.item_name, i.idem_desc,
    p.quantity, p.price
FROM items i
LEFT JOIN item_properties p ON i.item_id = p.fk_item_id
WHERE i.item_id = 191

需要左连接,因此即使右表中没有匹配的行,也总是返回左表中的行。 但是FROM中的那些SELECT是不必要的。 尽量使事情简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM