zoukankan      html  css  js  c++  java
  • mysql去除重复数据

    select可以取别名,delete不能。

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

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

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

    DELETE FROM tab1 WHERE col1 = ( SELECT MAX( col1 ) FROM ( SELECT * FROM tab1 ) AS t );

    ------------------------------------------------------------------------

    2. mysql delete from where in 时后面 的查询语句里不能加where条件

    Sql代码       deletefrom `t_goods` where fi_id in (select * from ( select fi_id from `t_goods` where fs_num isnulland fs_name isnulland fs_type isnullandfs_using isnulland fs_lifetime isnull) b) 
    Sql代码       deletefrom `t_goods` where fi_id in (select fi_id from `t_goods` where fs_num isnulland fs_name isnulland fs_type isnullandfs_using isnulland fs_lifetime isnull)  
    Sql代码       deletefrom `t_goods` where fi_id in ( select fi_id from `t_goods` )  

    上面三种情况,只有中间的不能执行。

    综合起来就是mysql delete from where in 时后面 的查询语句里不能加where条件

    ---------------------------------------------------------------------------

    3. delete from table... 这其中table不能使用别名

    Sql代码

        delete from student a where a.id in (1,2);(执行失败)

       

         select a.* from student a where a.id in (1,2);(执行成功)

    DELETE FROM v9_news WHERE title IN (SELECT title FROM (SELECT title FROM v9_news as newsb WHERE FROM_UNIXTIME(newsb.inputtime,'%Y-%m-%d')='2013-06-27' GROUP BY newsb.title HAVING COUNT(*) >1 ) b)   AND id NOT IN (SELECT id FROM (SELECT MIN(id) AS id FROM v9_news WHERE FROM_UNIXTIME(inputtime,'%Y-%m-%d')='2013-06-27' GROUP BY title HAVING COUNT(*)>1) c); TRUE!! DELETE FROM v9_news AS news   WHERE news.title IN (SELECT title FROM v9_news as newsb WHERE FROM_UNIXTIME(newsb.inputtime,'%Y-%m-%d')='2013-06-27' GROUP BY newsb.title HAVING COUNT(*) >1 )   AND id NOT IN (SELECT MIN(id) FROM v9_news WHERE FROM_UNIXTIME(inputtime,'%Y-%m-%d')='2013-06-27' GROUP BY title HAVING COUNT(*)>1); FALSE!!

  • 相关阅读:
    SpringMVC使用ResponseEntity实现文件下载,及图片base64的字节数组上传于下载
    File类的createNewFile()和mkdirs() mkdir()
    为什么Java里的Arrays.asList不能用add和remove方法?
    java如何向数组里添加元素
    java里getPath、 getAbsolutePath、getCanonicalPath的区别
    MultipartFile 类
    File类的createNewFile()与createTempFile()的区别
    IntelliJ Idea解决Could not autowire. No beans of 'xxxx' type found的错误提示
    FileInputStream读取的两种方法:逐字节读;以字节数组读取
    JCE cannot authenticate the provider BC
  • 原文地址:https://www.cnblogs.com/xlz307/p/3430001.html
Copyright © 2011-2022 走看看