sql查詢更新update select
針對一個上線的專案進行資料庫最佳化,以便後期統計,遇到一個資料填充的問題,在此記錄一下,各位如果也有這種問題,歡迎一起交流。 |
表結構:
當我從其它資料來源使用sql來填充這個表資料時,from_id都是null,因此要使用update來對from_id進行補充。
update t_ch_test t set t.from_id = (select max(a.id) from t_ch_test a where a.node_id = t.node_id and a.id < t.id)
使用update select來自連線進行更新操作。這個sql在oracle中執行是沒有任何問題的,然後,坑爹的是,這個sql在postgresql中編譯都報錯。而我們專案組用的最多的就是postgresql,因此無語了。
後來百度一下,發現postgresql在update時不支援表別名alis,所以最開始想的是把別名去掉,如下:
update t_ch_test set from_id = (select max(a.id) from t_ch_test a where a.node_id = node_id and a.id < id)
sql執行是沒有問題了,但一查結果,發現from_id全部為null,怎麼回事兒呢。
後來在同事的指導下,a.id < id換成了a.id < 100,執行成功,from_id也有值了,但這個100不能是一個固定值呀。後來自己各種試,終於試出來了,不用表別名,直接用表名代替,如下:
update t_ch_test set from_id = (select max(a.id) from t_ch_test a where a.node_id = t_ch_test.node_id and a.id < t_ch_test.id)
終於成功了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2745753/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL 查詢並不是從 SELECT 開始的SQL
- select for update
- MySQL中SELECT+UPDATE併發更新問題MySql
- oracle update left join查詢Oracle
- SQLServer DML操作阻塞SELECT查詢SQLServer
- Oracle\MS SQL Server Update多表關聯更新OracleSQLServer
- SQL查詢的:子查詢和多表查詢SQL
- SQL的資料庫操作:新增、更新、刪除、查詢SQL資料庫
- SQL--查詢SQL
- SQL 聚合查詢SQL
- 原生SQL查詢SQL
- mysql 高併發 select update 併發更新問題解決方案MySql
- Laravel5.6 如何列印 SQL?insert/update/select 列印方法總結LaravelSQL
- SQL 查詢總是先執行SELECT語句嗎?你們都錯了!SQL
- 深入理解SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE
- MySQL講義第27講——select 查詢之自連線查詢MySql
- MySQL講義第 47 講——select 查詢之查詢練習(五)MySql
- Mysql跨表更新 多表update sql語句總結MySql
- SQL 複雜查詢SQL
- sql常用查詢命令SQL
- SQL連線查詢SQL
- SQL高階查詢SQL
- SQL查詢總結SQL
- 一條select的查詢的過程
- SQL Server 2022 RTM 最新累積更新:Cumulative Update #13 for SQL Server 2022 RTMSQLServer
- HighgoDB查詢慢SQL和阻塞SQLGoSQL
- pid,sid相互查詢,根據PID查詢sqlSQL
- mysql update join,insert select 語法MySql
- SQL__UPDATESQL
- Mysql第六講 select查詢基礎篇MySql
- Hibernate查詢自動更新
- SQL mother查詢語句SQL
- sql查詢語句流程SQL
- SQL 唯一查詢SQL
- SQL慢查詢排查思路SQL
- 優化sql查詢速度優化SQL
- SQL查詢語句 (Oracle)SQLOracle
- sql 模糊查詢問題SQL