어린이가있는 페이지를 모두 반환하려면 어떻게해야합니까?부모가있는 모든 페이지 찾기
SELECT * FROM pages p
WHERE COUNT(SELECT * FROM pages p2 WHERE p2.page_id = p.parent_id) < 0
어린이가있는 페이지를 모두 반환하려면 어떻게해야합니까?부모가있는 모든 페이지 찾기
SELECT * FROM pages p
WHERE COUNT(SELECT * FROM pages p2 WHERE p2.page_id = p.parent_id) < 0
이 수 :
그래서 나는JOIN
을 사용하여 해결하십시오. 결과 목록이 고유하도록 DISTINCT
키워드가 SELECT
문에 사용되었습니다. 다음과 같이 SELECT DISTINCT a.*
FROM pages a
INNER JOIN pages b
ON a.page_id = b.parent_id
+1, 깨끗하고 정밀합니다. – Perception
당신은 자녀가있는 모든 페이지의 목록을 얻을 수 있습니다 :
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;
확실하지 않음을 thx 구문이 완전히 정확하면 다음과 같이 입력하면됩니다.
select * from pages where page_id not in
(select page_id from pages where parent_id is not null)
아이들이 그들을 가리키는이 페이지를 찾을 수 있습니다 : 모든 아이들이 NOT EXISTS
에 EXISTS
을 변경하지 않고
SELECT *
FROM pages p
WHERE EXISTS(
SELECT *
FROM pages xx WHERE xx.parent_id = p.page_id
);
는 페이지를 찾을 수 있습니다.
페이지의 ID 만 있으면 테이블을 자체 조인 할 필요가 없습니다. 단순히 parent_id 열의 값을 검색 할 수 있습니다. SQL은 다음과 같습니다.
SELECT DISTINCT parent_id
FROM pages
WHERE parent_id IS NOT NULL
수는 음수가 아닙니다. –