Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择具有相同列的不同值_Sql_Postgresql - Fatal编程技术网

Sql 选择具有相同列的不同值

Sql 选择具有相同列的不同值,sql,postgresql,Sql,Postgresql,我已经阅读了许多SQL查询,并尝试了这些查询,但没有成功地实现我想要的。我需要一个SQL查询,该查询接受随机成员ID的参数,如果他们有共同的对话,则返回: SELECT conversation_id FROM conversation_mapping WHERE user_id IN ('1902616933097029', '1112126462227347', '26544849', '13587745') GROUP BY conversation_id HAVING COUNT(c

我已经阅读了许多
SQL
查询,并尝试了这些查询,但没有成功地实现我想要的。我需要一个
SQL
查询,该查询接受随机成员ID的参数,如果他们有共同的对话,则返回:

SELECT
  conversation_id
FROM conversation_mapping
WHERE user_id IN ('1902616933097029', '1112126462227347', '26544849', '13587745')
GROUP BY conversation_id
HAVING COUNT(conversation_id) <> 1
结果一点也不好,因为在ID“1902616933097029”、“111212646227347”、“26544849”、“13587745”中,根本没有两个相同的对话

我的桌子

---------------------------------------
|    user_id       | conversation_id  |
---------------------------------------
|'1112126462227347'| 38               |
|"1112126462227347"| 39               |
|"13587445"        | 39               |
|"1902616933097029"| 38               |
|"1902616933097029"| 39               |
|"26544849"        | 38               |
|"26544849"        | 39               |
|"8541245"         | 38               |
---------------------------------------

在语句中的
的问题是,它查找id1、id2或id3,并且没有选择具有相同会话id的id1、id2和id3

如果我理解正确,您希望会话具有共同的所有id。如果是,请使用
having
子句:

SELECT conversation_id
FROM conversation_mapping
WHERE user_id IN ('1902616933097029', '1112126462227347', '26544849', '13587745')
GROUP BY conversation_id
HAVING COUNT(DISTINCT user_id) = 4;
“4”是
列表中
的用户数。

在表中有“13587445”,但搜索13587745

检查“where”条件中的值并执行此操作

SELECT
  conversation_id
FROM conversation_mapping
WHERE user_id IN ('1902616933097029', '1112126462227347', '26544849', '13587445')
GROUP BY conversation_id
HAVING COUNT(conversation_id) = 4;

请给出所需输出的示例。对于值“1902616933097029”、“111212646227347”、“26544849”、“13587745”,它应该返回39,这是id在PostgreSQL中唯一的共同对话:
具有array_agg(user_id)@>array['1902616933097029”、“111212646227347”、“26544849”、“13587745']
@AlexM,这是用于哪个dbms的?(注意没有指定dbms。)由于某些原因,ID不是整数类型。我使用PostgreSQLThis,效果很好,并按预期返回结果。谢谢。如果有另一个包含N个ID的对话,则会出现问题。查询返回对话的id,而N在,但有N+Y个参与者,因此它最终无法满足我的要求。@sql\U newbie\U Developer。只能回答您提出的问题:“接受随机成员ID参数的查询,如果它们有共同的对话,则返回”。这就是这个答案的作用。如果你有一个不同的问题,那么作为一个新的问题来提问,并附上样本数据、期望的结果和清晰的解释。
SELECT
  conversation_id
FROM conversation_mapping
WHERE user_id IN ('1902616933097029', '1112126462227347', '26544849', '13587445')
GROUP BY conversation_id
HAVING COUNT(conversation_id) = 4;