我想获取表中具有相同名称的行的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 |
谢谢:)
答案 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 |
+----+
希望我能帮上忙!