gpt4 book ai didi

sql - 当我尝试连接两个表中的数据时,行丢失

转载 作者:太空宇宙 更新时间:2023-11-03 10:28:19 24 4
gpt4 key购买 nike

我尝试编写一个相当简单的查询。

如果我运行以下查询:

SELECT parts.id, parts.type_id 
FROM parts
WHERE parts.type_id=1
OR parts.type_id=2
OR parts.type_id=4
ORDER BY parts.type_id;

我得到了我希望返回的所有行。现在,当我尝试使用以下查询从另一个表中获取 parent_unit 时,结果突然丢失了六行:

SELECT parts.id, parts.type_id, sp.parent_unit 
FROM parts, serialized_parts sp
WHERE (parts.type_id=1 OR parts.type_id=2 OR parts.type_id=4)
AND sp.parts_id = parts.id
ORDER BY parts.type_id

在过去,我从未真正在查询中处理过 OR,所以也许我只是做错了。也就是说,我猜这只是一个简单的错误。如果您需要示例数据,请告诉我,我会发布一些。谢谢。

最佳答案

要确保它具有与没有连接时相同的行数,请使用左外部连接

http://dev.mysql.com/doc/refman/5.0/en/join.html

例如:

SELECT parts.id, parts.type_id, sp.parent_unit 
FROM parts
LEFT JOIN serialized_parts sp
ON sp.parts_id = parts.id
WHERE (parts.type_id=1 OR parts.type_id=2 OR parts.type_id=4)
ORDER BY parts.type_id

默认的联接类型是内部联接。在内部联接中,如果表 A 和表 B 中的联接字段不匹配,则表 A 和表 B 的内容都不会显示。最可能的情况是,对于零件表中的六行,没有 serilized_pa​​rts 行的 parts_id 与零件行的 id 相匹配.如果是这种情况,通过将 sp.parent_unit 显示为 ,执行左外连接将显示没有 serialized_pa​​rts 行来匹配它们的行空

关于sql - 当我尝试连接两个表中的数据时,行丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3000488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com