其一:给连续相同的type编号,即大 1 大2 大3 小1 小2……,这个需要用到用户变量
创新互联公司是一家专注于成都网站设计、成都网站建设与策划设计,平安网站建设哪家好?创新互联公司做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:平安等地区。平安做网站价格咨询:18980820575
其二:编号后进行条件过滤
其三:分组统计
这三个可以写成一个SQL!
最近遇到一个业务需求, 需要查找满足条件且连续3出现条以上的记录。
表结构:
CREATE TABLE `cdb_labels` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`type` int(11) NOT NULL DEFAULT '0' COMMENT '标签类型:1喜欢异性类型,2擅长话题',
`content` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '标签内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8 COMMENT='标签内容';
1
2
3
4
5
6
7
8
所有数据: SELECT * FROM cdb_labels WHERE type = 1;
如果连续三个字母不是理解为三个连续的字母,可以这样实现
SELECT * FROM A表 WHERE name REGEXP '[[:lower:]]{3}'
1.随机读取连续多条记录。经过实践,可以随机读取多条连续的数据记录,里头取值的一般都是主键ID来进行最大值、最小值的读取:
SELECT * FROM example_table AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM example_table)-(SELECT MIN(id) FROM example_table))+(SELECT MIN(id) FROM example_table)) AS id) AS t2 WHERE t1.id = t2.id ORDER BY t1.id LIMIT 5;
2.随机多条数据。以下两种都是随机读取数据,查询数据速度、随机范围都基本相差不大
SELECT * FROM example_table WHERE id = ((SELECT MAX(id) FROM example_table)-(SELECT MIN(id) FROM example_table)) * RAND() + (SELECT MIN(id) FROM example_table) LIMIT 5;
SELECT * FROM example_table WHERE id=(SELECT floor(RAND() * ((SELECT MAX(id) FROM example_table)-(SELECT MIN(id) FROM example_table)) + (SELECT MIN(id) FROM example_table))) ORDER BY id LIMIT 5;
若该字段值唯一:
update 表 set 字段=新值 where 字段 in (Select top 10 字段 from 表);
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
SELECT * FROM `curriculum` where cuc_class_date '2016-10-01' and cuc_class_date = date_add('2016-10-01', INTERVAL 3 day)
这样可能会把10月1号非零点的也查出来,如果不想查出来在加date_format()函数格式一下时间