【发布时间】:2012-02-14 21:29:39
【问题描述】:
假设我有这个选择语句:
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;
但是这不起作用
【问题讨论】:
-
如果您想同时更新管理员和用户中的列,请查看:stackoverflow.com/questions/6362594/…。如果您只想根据用户的加入更新管理员中的列,请查看:stackoverflow.com/questions/1293330/…。
标签: mysql sql-update