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
获取多行相等的人员(Oracle SQL)_Sql_Database_Oracle - Fatal编程技术网

获取多行相等的人员(Oracle SQL)

获取多行相等的人员(Oracle SQL),sql,database,oracle,Sql,Database,Oracle,我的sql模式如下所示: ID | Like ______|_______ p1 | 2 p1 | 3 p1 | 4 p2 | 3 p2 | 2 p3 | 2 p3 | 3 p3 | 4 p4 | 3 p4 | 2 所以我必须选择两对喜欢同样东西的人。在本例中:[p1,p3]和[p2,p4]。所有的“like”应该是相同的,所以[p1,p2]是错误的! 我该怎么做 谢谢你的回答 您没有指

我的sql模式如下所示:

ID    | Like
______|_______ 
p1    |   2
p1    |   3
p1    |   4
p2    |   3
p2    |   2
p3    |   2
p3    |   3
p3    |   4
p4    |   3
p4    |   2
所以我必须选择两对喜欢同样东西的人。在本例中:[p1,p3]和[p2,p4]。所有的“like”应该是相同的,所以[p1,p2]是错误的! 我该怎么做


谢谢你的回答

您没有指定正在使用的Oracle版本号。在11g中,您可以使用LISTAGG分析函数进行此操作。如果您使用的是Oracle 10,则可以使用未记录的WM_CONCAT函数。请注意,在某些版本中,它返回VARCHAR,而在其他版本中返回CLOB:

SELECT like, WM_CONCAT(id)
  FROM mytable
 GROUP BY like
以下是有关如何做到这一点的更多信息:


希望这有帮助。

这是一个关系除法操作。您可以通过组合NOT EXISTS子句来执行此操作,例如:

SELECT a.ID AS ID1
      ,b.ID AS ID2
FROM   (SELECT DISTINCT ID FROM mytable) a
      ,(SELECT DISTINCT ID FROM mytable) b
WHERE  a.ID < b.ID
AND    NOT EXISTS
       ( SELECT a2.Like
         FROM   mytable a2
         WHERE  a.ID = a2.ID
         MINUS
         SELECT b2.Like
         FROM   mytable b2
         WHERE  b.ID = b2.ID
       )
AND    NOT EXISTS
       ( SELECT b2.Like
         FROM   mytable b2
         WHERE  b.ID = b2.ID
         MINUS
         SELECT a2.Like
         FROM   mytable a2
         WHERE  a.ID = a2.ID
       );

ID1 ID2
=== ===
p1  p3
p2  p4

你能详细说明一下你想要什么作为输出吗,到目前为止我知道你想要上面查询p1,p3和p2,p4中的两对,因为所有的喜欢都是匹配的…对吗?正如标题所建议的,当多行相等时找人,我想他要求p1,p3和p2,p4作为输出,你的查询将返回2 p1,p2,p4,p3 3 p1,p3,p4,p2 4 p1,P3请注意:我不确定这是否是最有效的解决方案。我把它改了,以减少所需的工作量。