Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengemas kini Baris Jadual PostgreSQL Menggunakan Subkueri dengan Logik Bersyarat?
Mengemas kini Baris Jadual PostgreSQL Menggunakan Subkueri
Pertimbangkan senario di mana anda mempunyai jadual sedia ada dalam pangkalan data Postgres, dan anda perlu mengemas kini barisnya menggunakan nilai yang diperoleh daripada subkueri. Tugasan ini boleh dicapai menggunakan pernyataan kemas kini yang ringkas.
Dalam kes khusus ini, objektifnya adalah untuk mengemas kini baris dalam jadual dummy menggunakan nilai yang diambil daripada subkueri kompleks yang menyertai berbilang jadual (cust_original, supp_original dan partner_original ) dan menggunakan logik bersyarat untuk menentukan nilai untuk pelanggan, pembekal dan rakan kongsi lajur.
Untuk melaksanakan kemas kini ini, anda boleh menggunakan sintaks berikut:
UPDATE dummy SET customer = subquery.customer, supplier = subquery.supplier, partner = subquery.partner FROM ( SELECT address_id, CASE WHEN cust.addr1 IS NOT NULL THEN TRUE ELSE FALSE END AS customer, CASE WHEN suppl.addr1 IS NOT NULL THEN TRUE ELSE FALSE END AS supplier, CASE WHEN partn.addr1 IS NOT NULL THEN TRUE ELSE FALSE END AS partner FROM address AS pa LEFT OUTER JOIN cust_original AS 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 AS 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 AS 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 ) AS subquery WHERE dummy.address_id = subquery.address_id;
Penyataan ini memanfaatkan subkueri untuk memperoleh nilai untuk lajur pelanggan, pembekal dan rakan kongsi. Subquery melaksanakan gabungan yang diperlukan dan logik bersyarat seperti yang dinyatakan dalam pernyataan sisipan anda yang disediakan.
Pernyataan KEMASKINI luar kemudian menggunakan nilai terbitan subkueri ini pada lajur yang sepadan dalam jadual dummy, mengemas kini baris sedia ada berdasarkan medan alamat_id.
Pendekatan ini amat berguna apabila anda perlu mengemas kini baris jadual berdasarkan nilai yang diperoleh daripada kompleks atau pengiraan dinamik atau apabila bekerja dengan set data yang besar di mana kemas kini baris demi baris tradisional boleh menjadi tidak cekap.
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Baris Jadual PostgreSQL Menggunakan Subkueri dengan Logik Bersyarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!