PHP MySQL的:从表A中获得行,其中表A表B中
问题描述:
的列以Z不存在的列的Z值I有2表项和item_relationsPHP MySQL的:从表A中获得行,其中表A表B中
项已经4列ROW_ID(主键),story_id, field1和field2
item_relation存储项目表中每行的关系,它有2列parent_story_id和child_story_id。两列都存储来自项目的行的story_id。
父项可以有多个子项,而子项可以有一个或多个父项。但是一个子项目不能有自己的子项目。
现在我想从哪个items.story_id中不存在item_relation.child_story_id
我如何去这样做的项目选择行?
答
我想选择的项目行针对items.story_id中不存在item_relation.child_story_id
你可以使用NOT IN,NOT EXISTS或LEFT JOIN/WHERE ... IS NULL。
用一个例子NOT IN:
SELECT *
FROM items
WHERE items.story_id NOT IN (
SELECT child_story_id FROM item_relation
)
与LEFT一个例子JOIN/WHERE ... IS NULL:
SELECT items.*
FROM items
LEFT JOIN item_relation
ON items.story_id = item_relation.child_story_id
WHERE item_relation.child_story_id IS NULL
与不举例存在:
SELECT *
FROM items
WHERE NOT EXISTS (
SELECT NULL
FROM item_relation
WHERE item_relation.child_story_id = items.story_id
)
文章NOT IN vs. NOT EXISTS vs. LEFT JOIN/IS NULL: MySQL由Quassnoi解释这些技术之间的差异,并比较它们性能。摘要:
这就是为什么最好的办法寻找失踪MySQL中值是使用LEFT JOIN/IS NULL或NOT IN,而不是不存在。