我有一个聊天数据库,每个用户都属于聊天;这种关系在表"is_member(uid,cid)“中表示。现在,当创建一个新的聊天时,我想检查是否还没有与这些用户进行聊天。下面是我的示例表(用户1,2,3和用户2,3一起聊天):
uid | cid
----|----
1 | 1
2 | 1
3 | 1
2 | 2
3 | 2
现在,我如何制定我的(我的)SQL语句以获得例如,参数uid=2和uid=3作为输出:
cid
---
1
2
…或者使用参数uid=1、uid=2和uid=3:
cid
---
1
您的帮助是非常感谢的,我对SQL还比较陌生,在这方面我在任何网上都没有发现类似的地方。提前感谢!
发布于 2022-06-12 18:48:58
根据数据和预期结果,我认为您正在寻找MySQL具有子句。
你的数据:
CREATE TABLE test(
uid INT,
cid int );
insert into test values (1,1), (2,1),(3,1),(2,2),(3,2);
第一个查询。
现在,我如何制定我的(我的)SQL语句以获得例如,参数uid=2和uid=3作为输出:
select cid
from test
where uid in (2,3)
group by cid
having count(distinct uid) =2;
结果: cid 1 2
第二次查询。
或者使用参数uid=1、uid=2和uid=3:
select cid
from test
where uid in (1,2,3)
group by cid
having count(distinct uid) =3;
结果: cid 1
演示:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=d98d0132ecea7b4730ab7b8e70813817
请注意。查询不是动态的,因此每次更改where子句时,都需要将count(distinct uid)
更改为where条件下使用的值数。
https://dba.stackexchange.com/questions/313262
复制相似问题