[英]MySQL - How to return distinct IDs where all rows for the same ID have null field value
[英]MySQL - Return distinct IDs where all rows for the same ID do not have specific field value
我有兩個聯接的查詢:
SELECT v.top_id, m.related_type
FROM content_v_table v
JOIN content_e_table e
ON v.child_id = e.winning_child_id
LEFT JOIN content_media m
ON v.child_id = m.child_id;
返回此數據:
TOP_ID RELATED_TYPE
1張圖片
1張圖片
1個視頻
2空
3張圖片
3張圖片
4個視頻
4個視頻
4個視頻
4張圖片
5張圖片
我想返回具有相同TOP_ID的任何行的“ RELATED_TYPE”列中沒有“視頻”值的唯一TOP_ID。 在這種情況下,查詢應返回以下TOP_ID:
2
3
五
謝謝!
在MySQL 8.x中,您可以執行以下操作:
with
x as (
my_query_with_two_joins
)
select distinct id
from x
where id not in (select id from x where type = 'video')
一種簡單的方法是使用TOP_ID
進行聚合,以斷言給定組中沒有記錄具有與視頻相關的類型:
SELECT v.top_id
FROM content_v_table v
INNER JOIN content_e_table e
ON v.child_id = e.winning_child_id
LEFT JOIN content_media m
ON v.child_id = m.child_id
GROUP BY v.top_id
HAVING COUNT(CASE WHEN m.related_type = 'video' THEN 1 END) = 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.