如何获取表中重复行的ID

时间:2019-10-29 10:37:10

标签: sql

我想获取表中具有相同名称的行的ID。

这是我的表格的一个示例,我想获取ID为n°1的重复名称的所有ID。这是id n°1的重复值:1、3和4。

ID | name  | size
1  | name1 |  12
2  | name3 |  13
3  | name1 |  12
4  | name1 |  12
5  | name3 |  13
6  | name4 |  18

现在这就是我想要的:

ID |
1  |
3  |
4  |

谢谢:)

5 个答案:

答案 0 :(得分:2)

一种简单的方法使用exists

select t.id
from t
where exists (select 1
              from t t2
              where t2.name = t.name and
                    t2.size = t.size and
                    t2.id = 1
             );

答案 1 :(得分:2)

如果您使用的是MySQL,那么GROUP_CONCAT在这里可能会有所帮助:

SELECT name, size, GROUP_CONCAT(ID) AS duplicates
FROM yourTable
GROUP BY name, size
HAVING COUNT(*) > 1;

大多数数据库与MySQL中的GROUP_CONCAT类似。

答案 2 :(得分:1)

SELECT
    ID, COUNT(*)
FROM
    table_name
GROUP BY
    name, size
HAVING 
    COUNT(*) > 1

答案 3 :(得分:0)

这是比Exist

更快的方法
SELECT ID 
FROM table
WHERE name IN
(SELECT name FROM table GROUP BY name HAVING COUNT(*) > 1)

希望这个回答您的问题

答案 4 :(得分:0)

您写答案的方式很棘手,所以我认为这是解决您描述问题方式的查询

select id 
from TABLE b inner join 
     (select name, size from TABLE where id = 1) a 
     on b.name = a.name and 
        b.size = a.size;

输出为

+----+
| id |
+----+
|  1 |
|  3 |
|  4 |
+----+

希望我能帮上忙!