繁体   English   中英

MySQL: select 具有特定字段值的多行

[英]MySQL: select multiple rows which has specific field value

我有一个 users_conversations 表,其中包含一个 conversation_id 和一个 user_id 来告诉哪些用户在同一个对话中。 我想找到任何具有 user_id 76 和 user_id 146 的对话 ID(它们是 id 28、31 和 32。这些 id 对我来说并不陌生。我只有两个用户 id)我试过

select * from users_conversations where user_id = 146 or user_id = 76 GROUP BY conversation_id

但我明白了

#1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 
'forums.users_conversations.user_id' which is not functionally dependent on columns in GROUP BY clause; 
this is incompatible with sql_mode=only_full_group_by

我怎样才能做到这一点?

在此处输入图像描述

select * from users_conversations
where conversations_id in (select conversations_id from user_conversations where user_id=76) 
AND conversations_id in (select conversations_id from user_conversations where user_id=146)

您可以过滤这些用户的表, group by conversation_id并在having子句中设置条件:

select conversation_id
from users_conversations
where user_id in (76, 146)
group by conversation_id
having count(distinct user_id) = 2

如果每个conversation_id没有重复用户的情况,您可以省略distinct

你的意思是不是:

select * from users_conversations where user_id = 146 or user_id = 76

为什么要使用组?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM