0

为 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 的方式。

谢谢

4

2 回答 2

0

如果您想阅读如何在 mysql 中正确实现连接,请阅读此

并且如果您仅在两个表中的匹配项都对 FK 和 PK 使用内部联接时才想要结果

于 2014-08-09T08:57:51.513 回答
0
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 不是必需的。尽量保持简单。

于 2014-08-09T09:19:42.013 回答