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

時間 2021-07-07 04:15:07

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

有A,B兩個表,它們有個欄位C是相同的,查詢A表按照B表中的C欄位總數排序的ASP SQL語句怎麼寫呢

select from a a inner jion b b on a.c select count b.c from b b group by b.c order by a.c desc 我理解的意思是這樣的。 如果 在b表中的總數 是指產品類別在b表出現的次數,則 select a.產品類別,c...

用SQL怎樣根據表種的欄位ID查出另表中的資料

我看的是你看我 例如 兩個表中的news type id 跟 type id是對應的,根據news 表中的 news type id 1 查出 news type 表中的 type name 根據 news表中的 news type id 1 查出 news type表中的 透明點評 這條資料,透明...

視力表 C字表 0 5等於多少度

現在視力有問題的人越來越多,年齡也越來越小,因而保護視力,做好日常的眼睛保健是很重要的。人擁有好的視力,不僅看東西清楚,還不會影響學習和工作。日常常用的保護眼睛的方法有 一 近距離用眼時間不宜過長,每隔40 50分鐘就應該稍微休息3一5分鐘,向遠處眺望一會減緩視力疲勞。二 讀書寫字,玩電腦,保持正確...