簡體   English   中英

select 孩子小於2的用戶

[英]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;

在這里試試: http://sqlfiddle.com/#!9/eb2c70/17

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM