如何归还所有有孩子的网页?
所以我有一个带
的标准表所以我想做这样的事情:
SELECT * FROM pages p
WHERE COUNT(SELECT * FROM pages p2 WHERE p2.page_id = p.parent_id) < 0
答案 0 :(得分:2)
这可以使用JOIN
简单地解决。 DISTINCT
语句中使用了SELECT
关键字,以使结果列表唯一。
SELECT DISTINCT a.*
FROM pages a
INNER JOIN pages b
ON a.page_id = b.parent_id
答案 1 :(得分:1)
您可以按如下方式获取包含子项的所有页面的列表:
select distinct(parent_id) from pages;
然后,您可以使用这些父ID来获取父页面:
select * from pages,
(select distinct(parent_id) as parent from pages) as parents
where pages.page_id = parents.parent;
答案 2 :(得分:1)
找到有孩子指向他们的页面:
SELECT *
FROM pages p
WHERE EXISTS(
SELECT *
FROM pages xx WHERE xx.parent_id = p.page_id
);
要查找没有任何孩子的网页,请将EXISTS
更改为NOT EXISTS
。
答案 3 :(得分:0)
不确定thx语法是否完全正确,但我会这样做:
select * from pages where page_id not in
(select page_id from pages where parent_id is not null)
答案 4 :(得分:0)
如果只需要页面的ID,则无需自行加入表格。您只需检索列parent_id的值即可。 SQL类似于:
SELECT DISTINCT parent_id
FROM pages
WHERE parent_id IS NOT NULL