给定一个表xf_conversation_recipient
,看起来像这样:
+----------------+----------------+
|conversation_id |recipient_state |
+----------------+----------------+
|1 |delete |
|1 |delete |
|2 |active |
|2 |delete |
|3 |delete |
|3 |delete |
|4 |active |
|4 |delete |
|5 |active |
|5 |active |
|6 |delete |
|6 |delete |
+----------------+----------------+
下面的查询返回的所有会话的ID符合您的条件
SELECT
conversation_id AS selectedId,
count(*) AS count
FROM xf_conversation_recipient
WHERE recipient_state = "delete"
GROUP BY conversation_id
HAVING count>1
返回:
+-----------+------+
|selectedId |count |
+-----------+------+
|1 |2 |
|3 |2 |
|6 |2 |
+-----------+------+
注,取决于您的应用程序,您可能想要停在这里。
筑巢这个查询,我们可以只提取selectedId
列,并再次筑巢它,我们可以使用它作为一个查询的IN
条件,就像这样:
SELECT * FROM xf_conversation_recipient
WHERE xf_conversation_recipient.conversation_id IN (
SELECT t1.selectedId FROM (
SELECT
conversation_id AS selectedId,
count(*) AS count
FROM xf_conversation_recipient
WHERE recipient_state = "delete"
GROUP BY conversation_id
HAVING count>1
) t1
)
将返回:
+----------------+----------------+
|conversation_id |recipient_state |
+----------------+----------------+
|1 |delete |
|1 |delete |
|3 |delete |
|3 |delete |
|6 |delete |
|6 |delete |
+----------------+----------------+
'每行至少有两行'你需要纠正这个 – Ejaz
我瘦你的问题可能会更清晰,如果你提供一些样本数据 – Randy
我加tw o例子。谢谢。 –