簡體   English   中英

MySQL GROUP BY if 條件

[英]MySQL GROUP BY if condition

僅當具有相同movie_id所有行都具有convert=2我才想返回movie_id 如果具有相同movie_id的行的convert=0則不返回movie_id

例子:

這應該不返回任何內容,因為所有三行都具有相同的 movie_id 但在最后一行上 convert=0

+----+----------+------------+------------+--------------+---------+
| id | movie_id |    lang    | email_sent | user_request | convert |
+----+----------+------------+------------+--------------+---------+
| 1  |    1     |   german   |     0      |      1       |    2    |
| 2  |    1     |   french   |     0      |      1       |    2    |
| 3  |    1     |   english  |     0      |      1       |    0    |
+----+----------+------------+------------+--------------+---------+

這應該返回movie_id因為所有三行都具有相同的movie_id,並且所有行的convert=2

+----+----------+------------+------------+--------------+---------+
| id | movie_id |    lang    | email_sent | user_request | convert |
+----+----------+------------+------------+--------------+---------+
| 1  |    1     |   german   |     0      |      1       |    2    |
| 2  |    1     |   french   |     0      |      1       |    2    |
| 3  |    1     |   english  |     0      |      1       |    2    |
+----+----------+------------+------------+--------------+---------+

這是我的查詢,但當我嘗試使用第二個示例數據時movie_id ,仍然返回movie_id

SELECT movie_id
from movie_subtitles
WHERE email_sent=0 AND user_request=1
GROUP BY CASE WHEN `convert`=2 THEN movie_id END
ORDER BY id ASC
LIMIT 1

我該如何解決?

你需要一個像這樣的 HAVING 子句:

SELECT movie_id
FROM movie_subtitles
WHERE email_sent=0 AND user_request=1
GROUP BY movie_id
HAVING SUM(Convert <> 2) = 0

暫無
暫無

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

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