赞
踩
记录一下平时用过的sql写法,省的想用的时候还得现找。持续更新~
1.1、SELECT结果直接INSERT,LEFT(str,len)从左截取字符串到len,CHAR_LENGTH()字符串长度。
- INSERT INTO `table1`(`Column1`,`Column2`,`Column3`)
- SELECT t2.Column1,t2.Column2,LEFT(Column3,CHAR_LENGTH(Column3)-3) FROM `table2` t2 WHERE XXX;
1.2、SELECT结果直接UPDATE。
- UPDATE table a
- INNER JOIN (
- SELECT DISTINCT(o.id),so.time FROM table_so so
- INNER JOIN table_o o ON so.`id` = o.`id`
- WHERE o.`type` = '7'
- AND so.`time` BETWEEN '2022-4-1 00:00:00' AND '2022-4-1 23:59:59')
- b ON a.`id` = b.id
- SET a.status= '1', a.time= b.time;
2、CASE WHEN THEN END ,用法相对自由,when后可接多种样式条件判断。
- SELECT CASE l.`state`
- WHEN '0' THEN '未处理'
- WHEN '1' THEN '异常'
- WHEN '2' THEN '正常'
- WHEN '3' THEN '已处理'
- END AS '状态'
- FROM `table` l WHERE XXX;
3、UNION ALL 联合多个查询结果(数据量多时慎用),DISTINCT查询结果字段去重(多字段时需注意规则)。
- SELECT DISTINCT(column1) AS column3
- FROM table1 WHERE column1 IS NOT NULL
- UNION ALL
- SELECT DISTINCT(column2) AS column3
- FROM table2 WHERE column2 IS NOT NULL
4、分组统计各项数据,本样例为column2下column1值为other_name的数量,条件可自行编写,我自己一般结合foreach统计多项数据。
- SELECT
- COUNT(IF(column1=other_name,id,NULL)) as other_name
- FROM table GROUP BY column2
5、Truncated incorrect DOUBLE value
UPDATE table SET state = 4 WHERE id= 18 AND state = 3
一般为类型错误,例如本来是varcher的写成了int,或者是int写成了varcher,这个好理解。但是应该与mysql版本或者什么校验有关系,如上图代码,state字段为varcher类型,之前可以使用已经上线好使的功能,突然报错,数据库直接验证时报的warning,但是也可以执行,且只对where后的state加上‘’后warning消失,where前的没有影响。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。