第一种:
先来录入一些测试数据
CREATE TABLE news(
ID INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
Title VARCHAR(255) NOT NULL,
PRIMARY KEY(ID)
);
INSERT INTO news (Title) VALUES (’aaa’);
INSERT INTO news (Title) VALUES (’aaa’);
INSERT INTO news (Title) VALUES (’aaa’);
INSERT INTO news (Title) VALUES (’bbb’);
INSERT INTO news (Title) VALUES (’bbb’);
INSERT INTO news (Title) VALUES (’ccc’);
列出所有Title字段重复的记录
SELECT * FROM news WHERE Title IN (
SELECT Title FROM news GROUP BY Title HAVING (COUNT(*)) >1
)
最大的缺点:
效率低下,如果数据量超过1万差不多就会死掉。
第二种:
在有些应用里面,我们需要查询重复次数最多的一些记录,虽然这是一个很简单的查询语句,但是对许多初学者来说,仍然有些难度,特发此文章备查。
Code:
SELECT keyword, count( * ) AS count
FROM article_keyword
GROUP BY keyword
ORDER BY count DESC
LIMIT 20
此段查询语句返回 article_keyword 表中 keyword 重复次数(count) 最多的20条记录。
Code:
SELECT DISTINCT count( * ) AS count
FROM article_keyword
GROUP BY keyword
ORDER BY count DESC
LIMIT 6
此段查询语句返回 article_keyword 表中 keyword 的重复次数(count) 排名前 6 的数值。通过添加 DISTINCT 返回唯一记录。
第三种:
数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较。
如果仅仅是查找数据库中name不重复的字段,很容易
SELECT min(`id`),`name`
FROM `table`
GROUP BY `name`;
但是这样并不能得到说有重复字段的id值。(只得到了最小的一个id值)
查询哪些字段是重复的也容易
SELECT `name`,count(`name`) as count
FROM `table`
GROUP BY `name` HAVING count(`name`) >1
ORDER BY count DESC;
但是要一次查询到重复字段的id值,就必须使用子查询了,于是使用下面的语句。
SELECT `id`,`name`
FROM `table`
WHERE `name` in (
SELECT `name`
FROM `table`
GROUP BY `name` HAVING count(`name`) >1
);
但是这条语句在mysql中效率太差,感觉mysql并没有为子查询生成临时表。
于是使用先建立临时表
create table `tmptable` as (
SELECT `name`
FROM `table`
GROUP BY `name` HAVING count(`name`) >1
);
然后使用多表连接查询
SELECT a.`id`, a.`name`
FROM `table` a, `tmptable` t
WHERE a.`name` = t.`name`;
结果这次结果很快就出来了。
第三种方法最好!
分享到:
相关推荐
MYSQL 查询和删除重复记录的方法很多,下面为您介绍几种常用的 MYSQL 查询和删除重复记录的方法,希望对您查询和删除重复数据方面能有所帮助。 SQL重复记录查询的几种方法: 1. 查找表中多余的重复记录,重复...
本文实例讲述了PHP实现在数据库百万条数据中随机获取20条记录的方法。分享给大家供大家参考,具体如下: 额,为什么要写这个?...还有一种方法,随机20次,重复执行20次。 例如: $sum=800000;//得到总条数 /
在mysql中有五种约束: 主键 为了快速查找表中的某条信息,可以通过设置主键来实现。主键约束是通过PRIMATY KEY 定义的,它可以唯一标识表中的记录 在 mysql中,主键约束分为两种 注意:每个数据表中最多只能有一个...
mysql中的五种统计函数: (1)max:求最大值 求每个部门的最高工资: [sql] view plain copy select EMP_NAME,EMP_DEP,max(EMP_SALARY) from EMPLOYEES group by EMP_DEP; (2)min:求最小值 求每个部门的最仰...
实例058 用TreeSet生成不重复自动排序 随机数组 71 实例059 Map映射集合实现省市级联选择框 73 第4章 字符串处理技术 75 4.1 格式化字符串 76 实例060 把数字格式化为货币字符串 76 实例061 格式化当前日期 77 实例...
delete: 较为复杂一些, 考虑下面几种情况 old的开始比new[j]的结束大 old的结束在new[j]的开始前 old和new[j]有共同部分, 而且 old含在new[j] 中 new[j]含在old中 互不包含, new[j] 在前 互不包含, old 在前 5. ...
delete: 较为复杂一些, 考虑下面几种情况 old[i]的开始比new[j]的结束大 old[i]的结束在new[j]的开始前 old[i]和new[j]有共同部分, 而且 old[i]含在new[j] 中 new[j]含在old[i]中 互不包含, new[j] 在前 互不...
这一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这里的ID 是自动生成的号码): SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9" 注意:以上...
1.5 几种综合网络服务器系统的安装 14 1.5.1 XAMPP 14 1.5.2 WAMP 16 1.5.3 Appserv 17 1.5.4 EasyPHP 18 1.5.5 VertrigoServ 19 1.6 几种开发工具的介绍 20 1.6.1 Vi及Vim 20 1.6.2 Eclipse+PHPEclipse插件 21 ...
本书特色:主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析;详细讲解数据库对增、删、改、查等SQL的支持并给出了相应的SQL应用案例;透彻分析函数...
10.4.1 MySQL中的自动增长字段 10.4.2 MS SQL Server中的自动增长字段 10.4.3 Oracle中的自动增长字段 10.4.4 DB2中的自动增长字段 10.5 业务主键与逻辑主键 10.6 NULL的学问 10.6.1 NULL与比较运算符...
10.4.1 MySQL中的自动增长字段 10.4.2 MS SQL Server中的自动增长字段 10.4.3 Oracle中的自动增长字段 10.4.4 DB2中的自动增长字段 10.5 业务主键与逻辑主键 10.6 NULL的学问 10.6.1 NULL与比较运算符...
10.4.1 MySQL中的自动增长字段 10.4.2 MS SQL Server中的自动增长字段 10.4.3 Oracle中的自动增长字段 10.4.4 DB2中的自动增长字段 10.5 业务主键与逻辑主键 10.6 NULL的学问 10.6.1 NULL与比较运算符...
10.4.1 MySQL中的自动增长字段 10.4.2 MS SQL Server中的自动增长字段 10.4.3 Oracle中的自动增长字段 10.4.4 DB2中的自动增长字段 10.5 业务主键与逻辑主键 10.6 NULL的学问 10.6.1 NULL与比较运算符...
调用方法为号">,其中ID号为记录号,即为该列表中的调用ID列中的数值。然后把该调用代码加到模板相应地方即可。例如要调用最新5个会员,ID号为1,那么调用代码为:<script src="Ns_News.asp?sortid=1"></script> ...
(1)选择“从行首开始匹配”,“查找内容”组合框中出现字符“^”,表示待查找字符串必须出现在文本中一行的行首。 (2)选择“字符在范围中”,那么在“^”后会增加一对括号“[]”,当前插入点在括号中。括号在...