我有这个 sql 语句:
SELECT
t0.col0,
t0.col1,
t2.col0,
t2.col1,
t1.col0,
t1.col1,
t3.col3,
t3.col5,
t1.col2
FROM table0 t0
INNER JOIN table1 t1 ON t0.col0 = t1.col1
INNER JOIN table2 t2 ON t2.col0 = t1.col0
INNER JOIN table3 t3 ON t1.col0 = t3.col1
WHERE t1.col1 in (300, 301, 302, 302)
AND t2.col5 like 'V-%'
AND t3.delete = 'false'
这工作得很好,并显示了一个带有连接列的虚拟表。所以我尝试像这样直接更新这个表:
UPDATE T SET T.col1 = 1, T.col2 = '01.01.2012'
FROM (
SELECT
t0.col0,
t0.col1,
t2.col0,
t2.col1,
t1.col0,
t1.col1,
t3.col3,
t3.col5,
t1.col2
FROM table0 t0
INNER JOIN table1 t1 ON t0.col0 = t1.col1
INNER JOIN table2 t2 ON t2.col0 = t1.col0
INNER JOIN table3 t3 ON t1.col0 = t3.col1
WHERE t1.col1 in (300, 301, 302, 302)
AND t2.col5 like 'V-%'
AND t3.delete = 'false'
) as T
没有成功......唯一的方法是创建一个视图并继续对其进行更新。
但是我可以在一个语句中更新一个虚拟表吗?