簡體   English   中英

MySQL-返回不同的ID,其中相同ID的所有行都沒有特定的字段值

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

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