[英]sql update with joined tables
說我有這個選擇語句:
SELECT ut.user_id,
a.firstname,
a.surname,
u.username,
u.email_address
FROM administrators a
JOIN user_types ut JOIN users u ON a.admin_id = ut.type_id
AND u.user_id = ut.user_id AND ut.user_type = 'ADMIN';
假設我想更新user_id = 1的行中的所有值;
我可以單獨更新每個表,也可以創建如下視圖:
CREATE OR REPLACE VIEW full_admin AS
SELECT ut.user_id,
a.firstname,
a.surname,
u.username,
u.email_address
FROM administrators a
JOIN user_types ut
JOIN users u on a.admin_id = ut.type_id
AND u.user_id = ut.user_id
AND ut.user_type = 'ADMIN'
然后我可以寫:
UPDATE full_admin
SET firstname = 'blah', etc, etc
WHERE user_id = 1;
這將更新所有表中的所有行
有沒有一種方法可以創建視圖而無需創建視圖?
就像是:
UPDATE (
SELECT ut.user_id,
a.firstname,
a.surname,
u.username,
u.email_address
FROM administrators a
JOIN user_types ut
JOIN users u ON a.admin_id = ut.type_id
AND u.user_id = ut.user_id
AND ut.user_type = 'ADMIN'
)
AS temp_table
SET firstname = "ALEX"
WHERE user_id = 1;
但是那不起作用
UPDATE administrators a
INNER JOIN user_types ut ON a.admin_id = ut.type_id
INNER JOIN users u ON u.user_id = ut.user_id AND ut.user_type = 'ADMIN'
SET u.firstname = "ALEX"
WHERE u.user_id = 1
;
當然,這僅在聯接表構造可更新時才有效(對視圖也適用)。
您可能會執行一些腳本(PLSQL),但我不相信您可能會在一個SQL查詢中(而不是通過視圖)更新多個表。
PLSQL功能強大且不復雜,可以由數據庫事件觸發。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.