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...