如何使用group by和order by获得重复的行?

时间:2019-05-06 19:46:18

标签: mysql sql mariadb greatest-n-per-group

我想按顺序获取重复的行,我正在尝试这种方式:

SELECT utc_id, utc_utiid, utc_comid, utc_recomendacoes FROM
( SELECT * FROM utilizador_competencia ORDER BY utc_recomendacoes DESC)
as sub GROUP BY utc_utiid, utc_comid HAVING COUNT(*) > 1

结果:

+--------+-----------+-----------+-------------------+
| utc_id | utc_utiid | utc_comid | utc_recomendacoes |
+--------+-----------+-----------+-------------------+
|     14 |         2 |       397 |                54 |
+--------+-----------+-----------+-------------------+

这里有重复行,但我想获取utc_id-> 207而不是utc_ic-> 14:

+--------+-----------+-----------+-------------------+
| utc_id | utc_utiid | utc_comid | utc_recomendacoes |
+--------+-----------+-----------+-------------------+
|     14 |         2 |       397 |                54 |
|    207 |         2 |       397 |                87 |
+--------+-----------+-----------+-------------------+

3 个答案:

答案 0 :(得分:1)

我猜你打算这样做

select c.*
from utilizador_competencia c
where exists (select 1
              from utilizador_competencia c2
              where c2.utc_utiid = c.utc_utiid and
                    c2.utc_comid = c.utc_comid and
                    c2.utc_id <> c.utc_id
             )
order by c.utc_id, c.utc_id, c.utc_recomendacoes desc;

答案 1 :(得分:0)

将order by应用于可见结果..子查询仅是数据集..因此,子查询的order by没用
将顺序移出子查询

SELECT utc_id, utc_utiid, utc_comid, utc_recomendacoes 
FROM ( 
    SELECT * 
    FROM utilizador_competencia 
    ) as sub 
GROUP BY utc_utiid, utc_comid  
HAVING COUNT(*) > 1
ORDER BY utc_recomendacoes DESC

并根据您的评论

SELECT utc_id, utc_utiid, utc_comid, utc_recomendacoes 
FROM utilizador_competencia 
GROUP BY utc_utiid, utc_comid  
HAVING COUNT(*) > 1
ORDER BY utc_recomendacoes DESC

答案 2 :(得分:0)

SELECT t.utc_id, t.utc_utiid, t.utc_comid, t.utc_recomendacoes
FROM
( SELECT utc_utiid, utc_comid 
  FROM utilizador_competencia 
  GROUP BY utc_utiid, utc_comid HAVING COUNT(*) > 1) d
INNER JOIN utilizador_competencia t
ON d.utc_utiid=t.utc_utiid
AND d.utc_comid=t.utc_comid 
ORDER BY t.utc_recomendacoes DESC;

这是您想要的吗?