当前位置:   article > 正文

常用mysql语句-select直接insert/update_mysql select后insert

mysql select后insert

记录一下平时用过的sql写法,省的想用的时候还得现找。持续更新~

1.1、SELECT结果直接INSERT,LEFT(str,len)从左截取字符串到len,CHAR_LENGTH()字符串长度。

  1. INSERT INTO `table1`(`Column1`,`Column2`,`Column3`)
  2. SELECT t2.Column1,t2.Column2,LEFT(Column3,CHAR_LENGTH(Column3)-3) FROM `table2` t2 WHERE XXX;

1.2、SELECT结果直接UPDATE。

  1. UPDATE table a
  2. INNER JOIN (
  3. SELECT DISTINCT(o.id),so.time FROM table_so so
  4. INNER JOIN table_o o ON so.`id` = o.`id`
  5. WHERE o.`type` = '7'
  6. AND so.`time` BETWEEN '2022-4-1 00:00:00' AND '2022-4-1 23:59:59')
  7. b ON a.`id` = b.id
  8. SET a.status= '1', a.time= b.time;

2、CASE WHEN THEN END ,用法相对自由,when后可接多种样式条件判断。

  1. SELECT CASE l.`state`
  2. WHEN '0' THEN '未处理'
  3. WHEN '1' THEN '异常'
  4. WHEN '2' THEN '正常'
  5. WHEN '3' THEN '已处理'
  6. END AS '状态'
  7. FROM `table` l WHERE XXX;

3、UNION ALL 联合多个查询结果(数据量多时慎用),DISTINCT查询结果字段去重(多字段时需注意规则)。

  1. SELECT DISTINCT(column1) AS column3
  2. FROM table1 WHERE column1 IS NOT NULL
  3. UNION ALL
  4. SELECT DISTINCT(column2) AS column3
  5. FROM table2 WHERE column2 IS NOT NULL

4、分组统计各项数据,本样例为column2下column1值为other_name的数量,条件可自行编写,我自己一般结合foreach统计多项数据。

  1. SELECT
  2. COUNT(IF(column1=other_name,id,NULL)) as other_name
  3. 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前的没有影响。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/840367
推荐阅读
相关标签
  

闽ICP备14008679号