[英]select user whose child is less than 2
我有這樣的表結構
ID | 用戶身份 | parent_id | 俱樂部 |
---|---|---|---|
1個 | 1個 | 俱樂部1 | |
2個 | 2個 | 1個 | 俱樂部1 |
3個 | 3個 | 1個 | 俱樂部1 |
4個 | 4個 | 2個 | 俱樂部1 |
5個 | 5個 | 2個 | 俱樂部1 |
6個 | 6個 | 3個 | 俱樂部1 |
7 | 7 | 3個 | 俱樂部1 |
8個 | 8個 | 4個 | 俱樂部1 |
9 | 9 | 4個 | 俱樂部1 |
10 | 10 | 5個 | 俱樂部1 |
11 | 11 | 5個 | 俱樂部1 |
12 | 12 | 6個 | 俱樂部1 |
13 | 13 | 6個 | 俱樂部1 |
14 | 14 | 7 | 俱樂部1 |
15 | 15 | 7 | 俱樂部1 |
我想要 select user_id,其孩子小於 2。參考上表用戶 1、2、3、4、5、6 和 7 兩個孩子完成,因此查詢應返回 8、9、10、11、12、13, 14,15
參考上表這里 user_id 1 有兩個孩子 2 和 3,user_id 2 有孩子 4 和 5 等等。
我需要 select user_id 孩子小於 2
您可以按如下方式進行:
SELECT user_id
FROM club_tree
WHERE user_id NOT IN (
SELECT parent_id
from club_tree
where club = 'club1'
group by parent_id
HAVING count(1) >= 2
)
and club = 'club1';
我們 Select 用戶不在有兩個以上孩子的用戶列表中。
這是為了讓用戶擁有兩個以上的孩子:
SELECT parent_id
from club_tree
group by parent_id
HAVING count(1) >= 2
這里可以測試一下: http://sqlfiddle.com/#!9/eb2c70/3
您可以使用left join
嘗試此查詢嗎:
SELECT c.user_id
from club_tree c
left join
(
select parent_id
from club_tree
where club = 'club1'
group by parent_id
HAVING count(1) >= 2
) as c2 on c.user_id = c2.parent_id
where c.club = 'club1' and c2.parent_id is null;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.