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

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

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中怎麼讀取oracle資料庫裡的表

string connstr provider msdaora data source dbname user id user name password sa unicode true dbname是你的資料庫名 user name是你的資料庫登陸名 sa是密碼 string sqlstr sel...

怎樣更改MySQL表中「整理」欄位的屬性

從長順將錦 可以執行下列資料定義查詢 alter table 表名modify 整理varchar 50 修改欄位型別 或者alter table 表名change 整理整理 varchar 50 修改欄位型別 說明 modify和change都可以改變欄位的屬性 資料型別 不同在於change在改...

Sql查詢表中除了某個欄位以外的所有欄位的方法

select name from syscolumns where id select max id from sysobjects where xtype u and name 表名 然後去查不等於column1的值不就ok了 方法就這樣了,具體你自己寫去吧 有是有,不過要通過系統表來差,而且語句...