Saya harus memperbarui bidang dengan nilai yang dikembalikan oleh gabungan 3 tabel.
Contoh:
select
im.itemid
,im.sku as iSku
,gm.SKU as GSKU
,mm.ManufacturerId as ManuId
,mm.ManufacturerName
,im.mf_item_number
,mm.ManufacturerID
from
item_master im, group_master gm, Manufacturer_Master mm
where
im.mf_item_number like 'STA%'
and im.sku=gm.sku
and gm.ManufacturerID = mm.ManufacturerID
and gm.manufacturerID=34
Saya ingin memperbarui nilai mf_item_number
bidang tabel item_master
dengan beberapa nilai lain yang tergabung dalam kondisi di atas.
Bagaimana saya bisa melakukan ini di MS SQL Server?
Jawaban:
Untuk memperjelasnya ...
UPDATE
Klausa dapat merujuk ke tabel alias yang ditentukan dalamFROM
klausa. Jadiim
dalam hal ini validContoh umum
sumber
UPDATE im
; im adalah alias yang Postgres tidak kenali: /Salah satu cara termudah adalah dengan menggunakan ekspresi tabel umum (karena Anda sudah menggunakan SQL 2005):
Mesin eksekusi kueri akan mencari tahu sendiri cara memperbarui catatan.
sumber
Mengadaptasi ini ke MySQL - tidak ada
FROM
klausaUPDATE
, tetapi ini berfungsi:sumber
Tidak menggunakan sql Anda di atas tetapi di sini adalah contoh memperbarui tabel berdasarkan pernyataan bergabung.
sumber
Anda bisa menentukan tabel tambahan yang digunakan dalam menentukan bagaimana dan apa yang akan diperbarui dengan klausa "FROM" dalam pernyataan UPDATE, seperti ini:
Di klausa WHERE, Anda harus menyediakan ketentuan dan bergabung dengan operasi untuk mengikat tabel ini bersama-sama.
Marc
sumber
MySQL: Secara umum, lakukan perubahan yang diperlukan sesuai kebutuhan Anda:
sumber
Coba seperti ini ...
sumber
Anda dapat menggunakan kueri berikut:
sumber
Anda dapat memperbarui dengan
MERGE
Command dengan kontrol lebih besarMATCHED
danNOT MATCHED
: (Saya sedikit mengubah kode sumber untuk menunjukkan maksud saya)sumber