Mysql 如何对重复记录进行SQL查询?

Mysql 如何对重复记录进行SQL查询?,mysql,sql,duplicates,Mysql,Sql,Duplicates,我需要执行一个SQL查询来创建一个表,其中列出了具有相同名称的测验。这是我到目前为止的查询代码: $sql = "SELECT a.name, a.id FROM tests a INNER JOIN tests b ON a.tests = b.tests WHERE a.id <> b.id"; $result = mysql_query($sql, $conn); $sql=“从测试中选择a.name、a.id 内部连接测试b a.test

我需要执行一个SQL查询来创建一个表,其中列出了具有相同名称的测验。这是我到目前为止的查询代码:

$sql = "SELECT a.name, a.id FROM tests a 
        INNER JOIN tests b 
        ON a.tests = b.tests WHERE a.id <> b.id";
$result = mysql_query($sql, $conn);
$sql=“从测试中选择a.name、a.id
内部连接测试b
a.tests=b.tests,其中a.id b.id“;
$result=mysql\u查询($sql,$conn);

然而,我没有得到任何结果-我已经确保手动检查数据库,肯定有重复的。有什么想法吗?

我认为最简单的方法是分组,然后使用
have

SELECT Name, COUNT(*) totalCount
FROM tests
GROUP BY Name
HAVING COUNT(*) > 1

我认为最简单的方法是分组,然后使用
HAVING

SELECT Name, COUNT(*) totalCount
FROM tests
GROUP BY Name
HAVING COUNT(*) > 1

什么RDBMS和哪个版本?以及如何复制行-哪些列必须匹配才能将两行视为重复?都是吗只需使用
DISTINCT
即可消除重复项!您的查询不会检查重复项。你的子句是a.idb.id。这意味着您正在查找与ID不匹配的记录。查询中没有任何内容查找相同的名称。所以,你的意思可能是(a.name=b.name和a.id=b.id)我建议JW的方法按名称分组,找到那些计数(*)>1的,是的,我不知道RDBMS是什么,是的,很抱歉。我不想删除重复项,只需要标识具有重复“name”列的行,这样我就可以根据需要重命名它们。什么RDBMS和哪个版本?以及如何复制行-哪些列必须匹配才能将两行视为重复?都是吗只需使用
DISTINCT
即可消除重复项!您的查询不会检查重复项。你的子句是a.idb.id。这意味着您正在查找与ID不匹配的记录。查询中没有任何内容查找相同的名称。所以,你的意思可能是(a.name=b.name和a.id=b.id)我建议JW的方法按名称分组,找到那些计数(*)>1的,是的,我不知道RDBMS是什么,是的,很抱歉。我不想删除重复的行,只需要用重复的“name”列标识行,这样我就可以根据需要重命名它们。谢谢!这只显示一次测试名称-是否有方法修改它,以便它实际显示有多少行具有相同的名称?例如,我们有几个名为“蛋白质”的测试,我需要它精确地显示多少(每个测试都有id)谢谢!这只显示一次测试名称-是否有方法修改它,以便它实际显示有多少行具有相同的名称?例如,我们有几个名为“Proteins”的测试,我需要它精确地显示有多少(每个测试都有id)