在我的表中有这样的数据
+-----+----------+
| sno | name |
+-----+----------+
| 101 | Raju |
| 102 | Raju |
| 103 | Santhosh |
| 104 | Santhosh |
| 105 | madhavi |
| 106 | suheel |
+-----+----------+
我要查找重复记录并仅显示sno(number)
例如输出应该是这样
+-----+
| sno |
+-----+
| 101 |
| 102 |
| 103 |
| 104 |
+-----+
答案 0 :(得分:1)
在派生表中,获取所有具有重复项的name
值。为此,我们可以在GROUP BY
上name
并使用HAVING
仅考虑那些名称,其中COUNT(*)
(name
的总行数)是大于1。
现在,我们可以联接回主表以获取它们各自的sno
值
SELECT
t.sno
FROM your_table t
JOIN (SELECT name
FROM your_table
GROUP BY name
HAVING COUNT(*) > 1) dt
ON dt.name = t.name
答案 1 :(得分:0)
这是MySQL 8+的一种实现方式:
return -1
答案 2 :(得分:0)
您可以尝试使用相关子查询
select sno from tablename a
where name in (select 1 from tablename b where a.name=b.name having count(name)>1 )