QL update select语句最常用的update语法是:
UPDATE TABLE_NAME
SET column_name1 = VALUE WHERE column_name2 = VALUE
如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦第一,要select出来放在临时变量上,有很多个很难保存。 第二,再将变量进行赋值。列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢? 就好象下面::
INSERT INTO table1 (c1,c2,c3) (SELECT v1,v2,v3 FROM table2)
答案是可以的,具体的语法如下:
UPDATE table1 alias
SET (column_name,column_name ) = (
SELECT (column_name, column_name)
FROM table2
WHERE column_name = alias.column_name)
WHERE column_name = VALUE
下面是这样一个例子: 两个表a、b,想使b中的memo字段值等于a表中对应id的name值
表a:
d name
1 王
2 李
3 张
表b:
d ClientName
1
2
3
(MS SQL Server)语句:
UPDATE b SET ClientName = a.name FROM a,b WHERE a.id = b.i