我有一个用户表,其中包含以下列,并且我已经提出了一个基于名字和姓氏的重复记录查询。MYSQL查询根据名字和姓氏查找重复记录
表结构
CREATE TABLE IF NOT EXISTS `User` (
`id` bigint(20) NOT NULL,
`address1` text COLLATE utf8_unicode_ci,
`mobile` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
`name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
`firstName` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
`lastName` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
`username` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`password` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
`email` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
`gender` tinyint(2) NOT NULL DEFAULT '0' COMMENT '1 - female, 2-male, 0 - unknown',
`zip` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
`countryCode` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL,
`joinedDate` datetime DEFAULT NULL,
`dateOfBirth` date DEFAULT NULL COMMENT 'User date of birth'
) ENGINE=MyISAM AUTO_INCREMENT=63561 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
和我的查询
SELECT id, firstName, lastName, mobile, email, count(*) as dupCount
FROM `User` `t`
WHERE firstName is not null and lastName is not null
GROUP BY firstName,lastName HAVING count(*) > 1
ORDER BY t.joinedDate DESC
下面
是结果的截图当我运行查询
,我的数据集是在这里http://pastebin.com/Y5qsTcFc
抱歉,如果粘贴bin不起作用。试试这个https://drive.google.com/file/d/0B3gG6MG9uh7KdmRGT3d0NWg2aVk/view?usp=sharing
当有电子邮件地址为NULL的记录时,我们有问题。我总是得到这个错误。
1062 - 重复项 '雷切尔 - Besnainou' 关键 'group_key'
查询我跑是:
SELECT id, firstName, lastName, mobile, email, count(*) as dupCount
FROM `User` `t`
WHERE firstName is not null and lastName is not null
GROUP BY firstName,lastName
HAVING count(*) > 1
我不知道为什么这个错误出现。任何帮助赞赏
更新1
我尝试把它添加到我的数据库,并运行查询它仍然是一样的
SET SESSION max_heap_table_size=536870912;
SET SESSION tmp_table_size=536870912;
裁判:Duplicate entry for key 'group_key'
更新2
我在d中试过同一个数据库iff mysql和phpmyadmin版本,它的工作。所以看起来像我的mysql版本有一个错误。我的MySQL版本是26年6月5日
您设置引擎收录到期。要么删除到期或在问题中粘贴您的代码。 –
@ Fred-ii-对不起,我从谷歌驱动器更新了它。请再次看到问题 – dev1234
我认为这是不是一个好主意,发布名称+电子邮件的完整的SQL转储 – mirko911