mysql的一个坑。修改或者删除的时候不能直接调用…

2018-06-18 01:15:02来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

在mysql的语法中。修改或者删除的时候不能直接调用子查询的结果集。需要先给子查询其别名。在调用。

比如:下面的去除重复项

DELETE FROM t_equipment_type t WHERE t.type = 2 
AND (t.type_code,t.type_name) IN (
  SELECT type_code,type_name FROM t_equipment_type
  GROUP BY type_code, type_name HAVING COUNT(*) > 1) 
        AND t.rec_id NOT IN (
  SELECT MIN(rec_id) FROM t_equipment_type 
  GROUP BY type_code, type_name HAVING COUNT(*) > 1)

这样会报错。

正确的写法如下:

DELETE FROM t_equipment_type WHERE rec_id IN (
SELECT b.* FROM (
SELECT rec_id FROM t_equipment_type  WHERE  
type_code IN (
SELECT type_code FROM t_equipment_type WHERE TYPE = 2
GROUP BY type_code HAVING COUNT(*) > 1)
        AND rec_id NOT IN (
SELECT MIN(rec_id) rec_id FROM t_equipment_type WHERE TYPE = 2
GROUP BY type_code,type_name HAVING COUNT(*) > 1)

) b )

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:mysql之触发器

下一篇:丢掉DDL,我用这招3分钟清空 MySQL 9亿记录数据表