mysql中You can’t specify target table for update in FROM clau_MySQL教程
推薦:MySQL查詢和修改auto_increment的方法本文實例講述了MySQL查詢和修改auto_increment的方法。分享給大家供大家參考。具體如下: 查詢表名為tableName的auto_increment值: 代碼如下:SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name=tableName; 修改表名為tableName的auto_increment
mysql中You can't specify target table for update in FROM clause錯誤的意思是說,不能先select出同一表中的某些值,再update這個表(在同一語句中)。 例如下面這個sql:
代碼如下:delete from tbl where id in
(
select max(id) from tbl a where EXISTS
(
select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1
)
group by tac
)
改寫成下面就行了:
代碼如下:
delete from tbl where id in
(
select a.id from
(
select max(id) id from tbl a where EXISTS
(
select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1
)
group by tac
) a
)
也就是說將select出的結果再通過中間表select一遍,這樣就規避了錯誤。注意,這個問題只出現于mysql,mssql和oracle不會出現此問題。
分享:MySQL中的if和case語句使用總結Mysql的if既可以作為表達式用,也可在存儲過程中作為流程控制語句使用,如下是做為表達式使用: IF表達式 代碼如下: IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 0 and expr1 NULL),則 IF()的返回值為expr2; 否則返回值則為 expr3。IF() 的返回值為數字值或字符
- MySQL查詢和修改auto_increment的方法
- MySQL中的if和case語句使用總結
- Centos5.5中安裝Mysql5.5過程分享
- /var/log/pacct文件導致MySQL啟動失敗的案例分享
- MySQL中在查詢結果集中得到記錄行號的方法
- CentOS下php使用127.0.0.1不能連接mysql的解決方法
- 如何配置MySQL主從復制
- MySQL 備份和恢復策略詳細教程
- Apache服務器下使用 ab 命令進行壓力測試
- MySQL下的NoSQL解決方案HandlerSocket
- MySQL引擎 學習筆記
- navicat如何連接mysql?navicat連接mysql詳細圖文教程
- 相關鏈接:
復制本頁鏈接| 搜索mysql中You can’t specify target table for update in FROM clau
- 教程說明:
MySQL教程-mysql中You can’t specify target table for update in FROM clau。