Menggunakan postgres 8.4, Tujuan saya adalah memperbarui tabel yang ada:
CREATE TABLE public.dummy
(
address_id SERIAL,
addr1 character(40),
addr2 character(40),
city character(25),
state character(2),
zip character(5),
customer boolean,
supplier boolean,
partner boolean
)
WITH (
OIDS=FALSE
);
Awalnya saya menguji permintaan saya menggunakan pernyataan insert:
insert into address customer,supplier,partner
SELECT
case when cust.addr1 is not null then TRUE else FALSE end customer,
case when suppl.addr1 is not null then TRUE else FALSE end supplier,
case when partn.addr1 is not null then TRUE else FALSE end partner
from (
SELECT *
from address) pa
left outer join cust_original cust
on (pa.addr1=cust.addr1 and pa.addr2=cust.addr2 and pa.city=cust.city
and pa.state=cust.state and substring(cust.zip,1,5) = pa.zip )
left outer join supp_original suppl
on (pa.addr1=suppl.addr1 and pa.addr2=suppl.addr2 and pa.city=suppl.city
and pa.state=suppl.state and pa.zip = substring(suppl.zip,1,5))
left outer join partner_original partn
on (pa.addr1=partn.addr1 and pa.addr2=partn.addr2 and pa.city=partn.city
and pa.state=partn.state and pa.zip = substring(partn.zip,1,5) )
where pa.address_id = address_id
menjadi Newbie Saya gagal mengonversi ke memperbarui pernyataan yaitu., memperbarui baris yang ada dengan nilai yang dikembalikan oleh pernyataan pilih. Setiap bantuan sangat dihargai.
sql
postgresql
subquery
sql-update
stackover
sumber
sumber
Jawaban:
Postgres memungkinkan:
Sintaks ini bukan SQL standar, tetapi jauh lebih nyaman untuk tipe kueri ini daripada SQL standar. Saya percaya Oracle (setidaknya) menerima sesuatu yang serupa.
sumber
ERROR: 42P01: relation "dummy" does not exist
dummy
harus diganti dengan nama tabel yang Anda coba perbarui. Harap mengerti pertanyaan dan jawaban sebelum mencoba mendaftar.Anda mengejar
UPDATE FROM
sintaks.Referensi
sumber
Jika tidak ada keuntungan kinerja menggunakan gabungan, maka saya lebih suka Common Table Expressions (CTE) agar mudah dibaca:
IMHO sedikit lebih modern.
sumber
Ada banyak cara untuk memperbarui baris.
Ketika datang ke
UPDATE
baris menggunakan subqueries, Anda bisa menggunakan salah satu dari pendekatan ini.Approach-4 [Menggunakan DENGAN pernyataan]
Saya harap, ini akan sangat membantu .😊
sumber
sumber
@ Mayur "4.2 [Menggunakan kueri dengan kompleks BERGABUNG]" dengan Common Table Expressions (CTEs) membantu saya.
Semoga ini bisa membantu ...: D
sumber