Mysql
在一個表中獲取兩個或多個給定值的所有共享值 (SQL)
我有一個聊天數據庫,每個使用者都屬於一個聊天;這種關係在表“is_member(uid, cid)”中表示。現在,在創建新聊天時,我想檢查是否還沒有與這些使用者進行聊天。這是我的範例表(使用者 1、2、3 和使用者 2、3 一起聊天):
uid | cid ----|---- 1 | 1 2 | 1 3 | 1 2 | 2 3 | 2
現在我如何制定我的(My)SQL 語句以獲取例如參數 uid=2 和 uid=3 作為輸出如下:
cid --- 1 2
… 或使用參數 uid=1、uid=2 和 uid=3:
cid --- 1
非常感謝您的幫助,我對 SQL 比較陌生,我在網上的任何地方都沒有發現任何類似的東西。提前致謝!
根據數據和預期結果,我認為您正在尋找MySQL HAVING子句。
您的數據:
CREATE TABLE test( uid INT, cid int ); insert into test values (1,1), (2,1),(3,1),(2,2),(3,2);
第一次查詢。
現在我如何制定我的(My)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 條件中使用的值的數量