sql中的扩展学习

1.

使用mysql进行delete from操作时,若子查询的 FROM 字句和更新/删除对象使用同一张表,会出现错误。 


 DELETE FROM tab1 WHERE  id = ( SELECT MAX(id ) FROM tab1 ); 
ERROR 1093 (HY000): You can’t specify target table ‘tab1′ for update in FROM clause 

针对“同一张表”这个限制,撇开效率不谈,多数情况下都可以通过多加一层select 别名表来变通解决


2.删除重复的数据并且保留一条

delete from cst_customer where cst_name in (select cst_name from (SELECT  cst_name  FROM cst_customer GROUP BY cst_name having COUNT(cst_name)>1)aa)
and cst_id not in (select cst_id from (select min(cst_id) cst_id  from cst_customer GROUP BY cst_name having COUNT(cst_name)>1) qq);


猜你喜欢

转载自blog.csdn.net/bingguang1993/article/details/80215108