兩張表A B,現在要把A表的a欄位,全部更新到B表的b欄位,兩個表有共同欄位C,請問這個update語句怎麼寫

2021-05-23 05:48:45 字數 1384 閱讀 8170

1樓:海影幻

樓主這語句有bug,這種修改如果在b表中的資料在a表中沒有就會把b表的這些資料改為空,若原來是空的還好,若不是空的就相當於把資料刪除了,這是其一。根據你說的報查詢返回多行來看,是出現了在a表中的c欄位的值有重複,該更新為一對一更新所以他不知道你要更新為a表中那多個值的那個值,於是就報了那麼一個錯誤,舉例說明就是 如a.c有同一個值有兩條記錄,比如:

小二:77(a:c)和 小三:

77(a:c)這樣他就不知道你是要把b中的b改為小二還是小三就報了那麼一個錯。

資料少的話可以關聯查詢出來(要保證一對一)然後將a的a複製到b的b那列,

多的話寫儲存過程,或者

update b set b=(select a from a where a.c=b.c)

where b.c in (select a.c from a)

--這個語句先測試,再操作,避免出現問題

--語句保證是1對1,通常加條件,在記錄相同的情況下可以選擇第一條,這個對應資料庫有對應函式與方法實現;

2樓:唐城冬

update b set b=a.a from b inner join a on b.c=a.c

首先要保證a表的c欄位是唯一的

3樓:董晴澀

這句話後面加where

現有兩張表a表a欄位、b表b欄位、ab兩表都有欄位c,以c欄位作為關聯,怎麼把b表b欄位的值複製道a表a欄位?

4樓:小李無刀

你是要複製,要用insert,不是update:

insert into a(c,a) select c,b from b

如果要去除重複的,在後面加上條件:

insert into a(c,a) select c,b from b where not c+b in (select c+a from a)

5樓:匿名使用者

update a表 set a表.a=(select b1.b from b表 b1,a表 a1 where b1.c=a1.c and a1.c=a表.c)

但要保證在b表中c欄位是唯一的才行。也就是說子查詢只能返回一行資料。

sql兩個表關聯查詢,a,b兩個表 ,關聯欄位為id,以a表為主表,關聯到b表中,

6樓:匿名使用者

select a.id,a.an,b.bn

from a left outer join b

on a.id = b.id

7樓:

select * from a left join b on a.id = b.id

excel兩張表對比資料例如表1和表2的A列幾乎相同,但是B列的資料不同,怎麼實現對比

假設表1和表2的資料均從第二行開始,我們在表1中進行資料的對比,對比的結果放在c列單元格中,如果表1和表2的a列和b列相對應的資料相同,則在同一行的c列單元格顯示 相同 否則顯示錶2中相對應的b列單元格的值,如果找不對對應表2中a列的值,則顯示為空。在表1的c2單元格輸入 if iserror vl...

兩張表關聯如何實現同時插入資料sql具體語句

這樣的語句 來可以放在儲存自過程裡 declare id int insert into table1 name,password values set id identity 取到剛插入bai的idinsert into table2 age,userid values id 其實這樣就du可以了...

SQL語言中把資料庫中兩張表資料關聯起來的語句

1 建立兩張測試表,create table test cj name varchar 20 remark varchar2 20 create table test kc name varchar 20 remark varchar2 20 2 插入測試資料 insert into test cj...