假设您有下表: items(item_id,item_parent) ...它是一个自引用表,因为item_parent引用了item_id。
您将使用哪种MySQL支持的SQL查询来选择表中的每个项目以及一个布尔值,该值指示该项目是否为父项/是否有引用它的其他项目?
如果表格中包含以下数据:
item_id item_parent
----------- -----------
1 0
2 0
3 2
4 2
5 3
...查询应该能够检索以下对象集:
{ “ITEM_ID”:1, “is_parent”:0}
{ “ITEM_ID”:2 “is_parent”:1}
{ “ITEM_ID”:3 “is_parent”:1}
{ “ITEM_ID”:4 “is_parent”:0}
{“item_id”:5,“is_parent”:0}
答案 0 :(得分:2)
SELECT i.item_id,
item_id IN
(
SELECT item_parent
FROM items
)
FROM items i
答案 1 :(得分:2)
这将返回所有项目和一个整数,指定每个项目的子项数:
SELECT T1.item_id, COUNT(T2.item_parent) AS is_parent
FROM items AS T1
LEFT JOIN items AS T2
ON T1.item_id = T2.item_parent
GROUP BY item_id
如果你想要一个布尔值(0或1),只需将其改为:
SELECT T1.item_id, COUNT(T2.item_parent) > 0 AS is_parent
FROM items AS T1
LEFT JOIN items AS T2
ON T1.item_id = T2.item_parent
GROUP BY item_id