1. 程式人生 > >sql查詢更新update select

sql查詢更新update select

    針對一個上線的專案進行資料庫優化,以便後期統計,遇到一個數據填充的問題,在此記錄一下,各位如果也有這種問題,歡迎一起交流。

    表結構:

    

    欄位說明:

     id:主鍵

     node_id:相當於一個單子

     from_id:記錄此條記錄的來源,比如第2條記錄的from_id就是第一條記錄的id,以此類推。

    當我從其它資料來源使用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)

    終於成功了,但出來了一個小問題,就是執行特別慢。

    於是,給表字段node_id添加了索引,這樣執行時間大大地縮短了。

    使用explain對sql語句進行分析,發現索引的作用簡直了,但看不太懂,後期學習一下explain,研究一下sql的效能。

相關推薦

sql查詢更新update select

    針對一個上線的專案進行資料庫優化,以便後期統計,遇到一個數據填充的問題,在此記錄一下,各位如果也有這種問題,歡迎一起交流。    表結構:        欄位說明:     id:主鍵     node_id:相當於一個單子     from_id:記錄此條記錄的來源

SQL SERVER的update select語句的寫法

需求: 要根據表A的資料來更新表B的某些欄位,A和B要進行條件關聯。 常規做法可能寫個子查詢 簡單寫法是用SQL Server的update select語法 update T_STOCK_INFO set count= a.count - b.count from T_PRE_STOCK_INFO b

SQL中的Update Select

來源:http://www.aimks.com/sql-update-the-select-statement-application.html QL update select語句 最常用的update語法是: UPDATE TABLE_NAME SET colum

oracle update select (更新查詢sql)

(1).update   tableName   set   (a,b,c)=(select   a,b,c   from   ida   where   ida.id=tableName.id); (2).update   tableName t1   set  

SQL 多表複合查詢修改 update set select

SQL Server 多表複合查詢修改 update t3 set t3.value = 0 from t1, t2, t3 where t2.id2 = t1.id1 and t2.i

Update Select 巢狀更新或批量更新一句SQL語句搞定

有兩個表:SPEC1、tmpDOTSPEC1種一列為:HIGHtmpDOT共有兩個:OLD、NEW兩個表的內容大概如下:SPEC1:... HIGH ...... A    ...... B    ...... A    ...... C    ...... B    ..

MySQL行(記錄)的詳細操作一 介紹 二 插入數據INSERT 三 更新數據UPDATE 四 刪除數據DELETE 五 查詢數據SELECT 六 權限管理

一些記錄 strong .cn delete sele ati code sql語句 rom 閱讀目錄 一 介紹 二 插入數據INSERT 三 更新數據UPDATE 四 刪除數據DELETE 五 查詢數據S

SQL update select結合語句詳解及應用

應用 comm 執行 sel ron 詳解 strong 閱讀 等於 SQL update select結合語句詳解及應用 2013年10月1日 MK 數據庫 19 閱讀 157639次 QL update select語句 最常用的update語法是: 1 2

博客SQL-Server更新數據庫UPDATE語法讀書筆記[圖]

熱門 博客 得出 索引 條件 ast 進行 但是 判斷 最近在研究博客網站,其實在很多年以前,博客是非常流行的,那時候互聯網還處於發展的初級階段,尤其是在中國地區,因此出現了國內-國外兩大博客系統,分別是zblog和wordpress程序,當然了,很顯然是國外的博客最先被開

SQL查詢select

使用者資訊設定 create user scott identified by tiger; 建立使用者scott密碼是tiger grant connect,resource to scott; 賦予使用者scott許可權 conn或sqlplus scott/tiger 進入scott使

sql查詢 嵌套SELECT實用語句

exp ring union res pda als 老師 效果 存在 嵌套SELECT語句也叫子查詢,一個 SELECT 語句的查詢結果能夠作為另一個語句的輸入值。子查詢不但能夠出現在Where子句中,也能夠出現在from子句中,作為一個臨時表使用,也能夠出現在selec

53 Oracle資料庫SQL開發之 子查詢——編寫包含子查詢UPDATE和DELETE

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C#、SQL 查詢+修改+刪除+更新工具

1.登陸原始碼: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Lin

更新(Update語句)查詢的方法

正 文: 資料庫更新就一種方法Update, 其標準格式:Update 表名 set 欄位=值 where 條件 不過根據資料的來源不同,還是有所區別的: 1.從外部輸入 這種比較簡單 例: update tb set UserName="XX

幾種更新(Update語句)查詢的方法

正 文: 資料庫更新就一種方法Update,其標準格式:Update 表名 set 欄位=值 where 條件只是依據資料的來源不同,還是有所差別的:  1.從外部輸入這樣的比較簡單例:update tb set UserName="XXXXX" where UserID="aasdd"2.一些

SQL 查詢(SELECT)

查詢是資料庫中最頻繁的操作了,語句簡單,功能強大。 可以對基本表和檢視進行查詢。 模板 SELECT [ALL|DISTINCT]<目標列表達式>[,<目標列表達式>]... FROM<表名或檢視名>[,<表名或檢視名>.

ECSHOP後臺SQL查詢提示錯誤 this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT

一)、首先說一下錯誤現象:市面上流行的絕大部分ECSHOP模板,安裝的時候都需要執行一段或幾段SQL語句來修改資料結構或者初始化一些資料。大多數ECSHOP管理員為了省事,都會通過 “ECSHOP後臺》資料庫管理 》SQL查詢” 來執行這些SQL語句。這時問題就來了,當你貼上進SQL語句,點“提交查詢”時,系

mysql update in 巢狀子查詢更新

更新該句 update punchcard_tbl set percheck=3 where id in (select id punchcard where id=1) 在 MySQL 命令列工具中傳回:ERROR 1093 (HY000): You can't spec

SQL查詢分析器中執行對SYSOBJECTS 操作的語句時提示:未啟用對系統目錄的特殊更新等資訊

在查詢分析器中執行下面的語句 DELETE FROM SYSOBJECTS WHERE NAME LIKE '%DF__TR_FDZDMX%' OR NAME LIKE '%PK_TR_FDZDMXK%' 執行結果提示如下資訊: 伺服器: 訊息 259,級別 16,狀態 2,行 1 未啟用對系統目錄的特殊

HQL和SQL查詢

spa 包含 生成 2-0 連接 exec 刪除對象 別名 ets 轉自http://blog.csdn.net/aaa1117a8w5s6d/article/details/7757097 HQL和SQL的區別 標簽: sqlhibernatejavasession