查找具有不同ID但相同日期的行

时间:2020-02-24 19:08:45

标签: mysql sql

考虑下表中的表格:

table tr th {
  font-weight: bold;
}

如何仅获取具有相同日期但ID不同的行。

现在,我只能获得数量超过1的ID,如下所示: 当前查询是

id    date
1     2016
1     2017
2     2017
2     2017
3     2016
3     2017
4     2018
5     2018

我想要那个...

"SELECT * FROM posts WHERE userid = :userid ORDER BY postdate DESC"

1 个答案:

答案 0 :(得分:0)

您可以将SELECT语句与INNER JOIN一起使用,该INNER JOIN包含一个内联视图,其中存在HAVING COUNT(DISTINCT id)>1子句:

SELECT DISTINCT p1.*
  FROM posts p1
  JOIN
  (
   SELECT date 
     FROM posts
    GROUP BY date
   HAVING COUNT(DISTINCT id)>1 ) p2
    ON p2.date = p1.date 

Demo 1

更新:如果您的DBMS版本为8+,则可以使用窗口分析功能作为替代:

WITH posts2 AS
(
 SELECT p1.*, COUNT(id) OVER (PARTITION BY date) AS CNT
   FROM ( SELECT DISTINCT * FROM posts ) p1
)
SELECT id, date
  FROM posts2
 WHERE CNT > 1; 

Demo 2

相关问题