首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一个表中获取两个或多个给定值的所有共享值(SQL)

在一个表中获取两个或多个给定值的所有共享值(SQL)
EN

Database Administration用户
提问于 2022-06-12 08:38:44
回答 1查看 103关注 0票数 2

我有一个聊天数据库,每个用户都属于聊天;这种关系在表"is_member(uid,cid)“中表示。现在,当创建一个新的聊天时,我想检查是否还没有与这些用户进行聊天。下面是我的示例表(用户1,2,3和用户2,3一起聊天):

代码语言:javascript
运行
复制
uid | cid
----|----
 1  |  1
 2  |  1
 3  |  1
 2  |  2
 3  |  2

现在,我如何制定我的(我的)SQL语句以获得例如,参数uid=2和uid=3作为输出:

代码语言:javascript
运行
复制
cid
---
 1
 2

…或者使用参数uid=1、uid=2和uid=3:

代码语言:javascript
运行
复制
cid
---
 1

您的帮助是非常感谢的,我对SQL还比较陌生,在这方面我在任何网上都没有发现类似的地方。提前感谢!

EN

回答 1

Database Administration用户

回答已采纳

发布于 2022-06-12 18:48:58

根据数据和预期结果,我认为您正在寻找MySQL具有子句。

你的数据:

代码语言:javascript
运行
复制
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作为输出:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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条件下使用的值数。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/313262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档