我想按顺序获取重复的行,我正在尝试这种方式:
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 |
+--------+-----------+-----------+-------------------+
答案 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;
这是您想要的吗?