码迷,mamicode.com
首页 > 数据库 > 详细

MySQL常见错误总结

时间:2018-10-23 23:08:24      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:常见   class   --   问题   常见错误   rac   sql语句   you   table   

1)DELETE语句不能直接使用表的别名

  执行insert,update,delete语句时,我们为了方便常给表加上别名,这在Oracle下完全没有问题,但是MySQL的delete语句后面不可以直接使用表的别名,会提示语法错误,如下面这条语句就是错误的,

  DELETE FROM `user` a WHERE a.USER_NAME = ‘lisi‘; -- 错误的 

  正确的写法,DELETE a FROM `user` a WHERE a.USER_NAME = ‘lisi‘,在delete和from之间加表的别名

2)删除一张表的某些记录时,where条件是通过查询这张表获得的导致报错You can‘t specify target table ‘s‘ for update in FROM clause

  执行SQL语句时出现这个错误。原因是在更新这个表和数据时又查询了它,而查询的数据又做了更新的条件。以前ORACLE上面没有这个错误。

解决方法1.新建一张临时表,删除之后,把这张临时表删除。2.第二种方法,在where条件外再包一层查询就可以避免这种错误如

DELETE FROM tempA WHERE tid NOT IN (
    SELECT t.tid FROM (
      SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
    ) t
)

 

MySQL常见错误总结

标签:常见   class   --   问题   常见错误   rac   sql语句   you   table   

原文地址:https://www.cnblogs.com/zplogo/p/9839259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!