簡體   English   中英

GROUP_CONCAT WHERE子句

[英]GROUP_CONCAT WHERE clause

顯示有多少用戶已接受某個項目的請求(即pending = 0),前綴為發送請求的用戶的名稱。

items :
item_id  item_name
1         I1
2         I2

profile :
user_id name
1        A
2        B
3        C
4        D

user_items :
user_id  shared_by_user_id  pending    item_id
1         2                  1            1
3         2                  0            1
4         2                  0            1
1         2                  1            2

預期產出

item_name    users     shared_by_user_id  
I1           B,C,D                 2          
I2           B                     2          

我寫了以下查詢,其輸出如下 -

select item_name, concat(t4.name, ',',group_concat(t3.name)) as users, t1.shared_by_user_id
from user_items t1 
left join item t2 on t2.item_id = t1.item_id
left join profile t3 on t3.user_id = t1.user_id
left join profile t4 on t4.user_id = t1.shared_by_user_id 
where t1.shared_by_user_id = 2 
group by t2.item_id;

實際產出

item_name    users     shared_by_user_id  
I1           B,A,C,D              2          
I2           B,A                  2 

顯然,剩下的問題是在GROUP_CONCAT期間添加一個用於過濾pending = 1記錄的CONDITION,但是無法找到如何...

這是group_concat()所需的表達式嗎?

concat(t4.name, ',', group_concat(case when pending = 1 then t3.name end)) as users

group_concat()忽略NULL值。

暫無
暫無

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

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