考虑下表中的表格:
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"
答案 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
更新:如果您的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;