更新a表中c欄位等於b表的c欄位,條件是當a表中d欄位等於或包含b表d欄位的值。求sql更新語句

2021-07-07 04:14:40 字數 3714 閱讀 5339

1樓:

update sa set cdefine = result.cdefine from sa inner join ( select sa.code, ( select top 1 b.

cdefine from dis b where b.code in ( case --查詢當前第一個逗號前得字元 when charindex(',',sa.code) <> 0 then substring(sa.

code,1,charindex(',',sa.code)-1)

--字元中沒有逗號的情況 when charindex(',',sa.code) = 0 then sa.code end ) ) as cdefine from sa ) result on result.

code =sa .code

樓主這條語句我想了好久,我的思路是:

1.將code 對應的 cdefine 組成一張表2.更新的時候通過關聯 思路1表 。

進行關聯3。由於你的code欄位是逗號隔開,那麼可能會出現一種情況是dis表中可能並未對應都是同樣的值, 如 sa 表 code 有 0001 ,0002 dis 表中 0001 對應的是 123 而 0002 對應的是321 是兩種不同的值, 我目前是取 0001 的值 123 作為更新的條件。

2樓:匿名使用者

新建一張和sa一樣的表aaa表,下面的語句可以把sa表分開來

declare

x number;

y number;

v_length number;

begin

select count(*) into y from sa表;

x := 1;

for idx in 1 .. y loop

insert into aaa表

select regexp_substr((select code, cdefine

from (select *, rownum rm from sa表)

where rm = x),

'[^,]+',

1,level)

from dual

connect by level <=

length((select code, cdefine

from (select *, rownum rm from sa表)

where rm = x)) -

length(replace((select code, cdefine

from (select code, cdefine, rownum rm

from sa表)

where rm = x),

',',

'')) + 1;

commit;

x := x + 1;

end loop;

end;

這樣你用aaa表和dis表關聯,其他的後續我想你應該能做的了,這個問題最大難點就是將一個欄位的值拆分

更新一個表的欄位值等於另一個表的欄位值的sql語句

3樓:海天盛筵

sql語句如下:

更新aseta.ty2=b.ty1fromt2a,t1bwherea.n2=b.n1

將t2表的ty2欄位的值更新為表的ty1欄位的值。假設表的n2=b表的n1。

4樓:該使用者未註冊

sql語句如下:

update a

set a.ty2=b.ty1

from t2 a,t1 b

where a.n2=b.n1

更新t2表的

ty2欄位的值為t1表的ty1欄位的值,條件是a表的n2=b表的n1

擴充套件資料:

常用sql語句——

1、說明:建立資料庫

create database database-name

2、說明:刪除資料庫

drop database dbname

3、說明:備份sql server

--- 建立 備份資料的 device

use master

exec sp_addumpdevice 'disk', 'testback', 'c:\mssql7backup\mynwind_1.dat'

--- 開始 備份

backup database pubs to testback

4、說明:建立新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根據已有的表建立新表:

a:create table tab_new like tab_old (使用舊錶建立新表)

b:create table tab_new as select col1,col2… from tab_old definition only

5、說明:刪除新表

drop table tabname

6、說明:增加一個列

alter table tabname add column col type

注:列增加後將不能刪除。db2中列加上後資料型別也不能改變,唯一能改變的是增加varchar型別的長度。

5樓:匿名使用者

直接update的話,這個應該足夠了,嘗試一下告訴我結果update mumbe t

set pass = (select ppass1 from mumbe1 where id = t.id)

where not exists (select 1 from mumbe1 where id = t.id and ppass1 = t.pass)

直接檢測 哪個id 下 pass欄位資料 不一樣 id顯示出來,我手動更新

select distinct id

from mumbe t, mumbe1 t1where t.id = t1.id

and t.pass <> t1.ppass1

6樓:強濰僑弘

這個問題好像以前沒見過的,不過可以說個思路,你先進想查詢的,就是查這兩個表通過他們的n1和n2的值是否相等的,要是有相等的,你就先將n2中的資料刪掉,將n1中資料插入進去,去試一下!不知道行不行的!

7樓:匿名使用者

sql server merge 例子

可以滿足 多種情況的處理

比如 匹配的時候,更新

源表有,目標表沒有,插入

目標表有,源表沒有,目標表該資料刪除

8樓:匿名使用者

update a set a.ty2=b.ty1 from t2 a,t1 b where a.

n2=b.n1 --保證沒有問題,不信可以先測試一下 這個問題好像以前沒見過的,不過可以說個

9樓:匿名使用者

update bobo set mumbe.pass=mumbe1.ppass1 where mumbe.pass!=mumbe1.ppass1

C中怎麼實現表的增刪改查,c 中怎麼實現表的增刪改查?

我做了一個例項,希望可以幫助你,記得采納哦。我就截圖你看吧 新增 if messagebox.show 請你核對資料 確認 messagebotuton.okcancel,messageboxicon.asterisk dialogresult.cancel return else string s...

VLOOKUP C4,價格表B 3 C 5,2,0C 5是代表什麼

是絕對引 用bai的意思。c5是列絕du對引用,複製時zhi列不變行變。下拉就dao是內c6,右拉就是c5 不是d5 c 5是行絕對引用,複製容時行不變列變。下拉就是c5 不是c6 右拉就是d5。c 5是行列絕對引用,複製時行列都不變,下拉右拉都是c5。對c5這個單元格進行絕對引用,就是前面的 是鎖...

C中屬性和欄位的區別

c 中屬性和欄位的區bai別為 訪du 問性不同 zhi 包含不同 安全性 dao不同。一 訪版問性不同 1 c 中屬性權 c 中屬性是限制只能給變數賦於某個範圍的值,是有限制的訪問私有變數。2 c 中欄位 c 中欄位是自由的 毫無限制的訪問公有變數。二 包含不同 1 c 中屬性 c 中屬性中包含兩...