2013-06-27 41 views
12

Tôi cần sao chép ref_id1 từ bảng1 vào cột ref_id2 trong bảng2 hai đối sánh sẽ là: id (cùng tên cột), a_ref1 & b_ref1 (tên cột khác nhau nhưng giá trị bằng số sẽ giống nhau).Cách sao chép một cột của bảng vào cột của bảng khác trong PostgreSQL so sánh cùng một mã số

Table1

ID  ref_id1      a_ref1 
9  2.3456762498;    1367602349 
9  1.61680784158;    1367653785 
9  2.63461385408;    1367687746 
9  0;1367688520 
9  0.780442217152;    1367740313 
9  3.18328461662;    1367773889 
9  0.775471247616;    1367774978 

Table2

ID   b_ref1      ref_id2 
9  1367602349; 
9  1367740313; 
9  1367774978; 
2  1357110511; 
2  1357186899; 
2  1357195928; 
2  1357199525; 

Trong một nhu cầu Tóm lại để sao chép ref_id1 để ref_id2 bằng cách so sánh id và a_ref1 với b_ref1, Xin vui lòng cho tôi biết làm thế nào để làm điều đó.

Trả lời

17
UPDATE public.clean_trips_byobu 
SET trip_dist = clean_trips.bktp_mt_total 
FROM public.clean_trips 
WHERE public.clean_trips.obu_id = clean_trips_byobu.obu_id 
AND clean_trips.bktp_trip_id = clean_trips_byobu.trip_id; 

Hy vọng nó sẽ làm việc cho bạn.

0

Tôi nghĩ rằng điều này sẽ làm việc:

UPDATE Table2 
SET ref_id2 = ref_id1 
FROM Table2 
    JOIN Table1 ON 
     Table2.Id = Table1.Id AND Table2.a_ref1 = Table1.b_ref1 
+0

user2480596, câu trả lời của bạn sẽ chạy, nhưng cột này không được cập nhật. dữ liệu của tôi là khác nhau nhưng mục đích là hoàn toàn giống nhau, tôi chạy sau truy vấn CẬP NHẬT public.clean_trips_byobu SET trip_dist = (SELECT bktp_mt_total TỪ clean_trips THAM GIA clean_trips_byobu ON clean_trips_byobu.obu_id = clean_trips.obu_id VÀ clean_trips_byobu.trip_id = clean_trips.bktp_mt_total); trả về: Truy vấn được trả về thành công: 284193 hàng bị ảnh hưởng, thời gian thực thi 69580 mili giây. nhưng cột trip_dist không thay đổi gì cả. – NamertaArora

2

gì bạn muốn là

UPDATE Table2 
SET ref_id2 = table1.ref_id1 
FROM table1 
WHERE table1.id = table2.id 
AND table1.a_ref1 = table2.b_ref1; 

Sửa Đây là những gì bạn thực sự muốn

Như đã thấy here (thô sơ)

7
UPDATE Table2 --format schema.table_name 
SET 
ref_id2 = table1.ref_id1 
FROM table1 -- mention schema name 
WHERE table1.id = table2.id 
AND 
table1.a_ref1 = table2.b_ref1; 
Các vấn đề liên quan