常用mysql语句-select直接insert/update

记录一下平时用过的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前的没有影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值