MySQL常见错误总结

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
)
原文地址:https://www.cnblogs.com/zplogo/p/9839259.html