我的语句是这样
update 表1 set 表1.a=(select 表2.b where 表1.c=表2.d)
这个语句是可以执行的,但是它会把表1没有在表2中找到匹配项的那些行全置为空,请问怎么改语句才能只修改表1中c字段在表2中字段有相等的情况。
比如
表1
a c
xy 1
dd 2
yy 3
ee 4表2
b d
aa 1
ff 2
rr 3
如果用我的语句,结果会是
表1
a c
aa 1
ff 2
rr 3
4
其中表1.c=4时,表1.a为空。现在我需要不去修改表1.c=4的情况,请问如果修改语句。谢谢了!非常急!!在线等!
update 表1 set 表1.a=(select 表2.b where 表1.c=表2.d)
这个语句是可以执行的,但是它会把表1没有在表2中找到匹配项的那些行全置为空,请问怎么改语句才能只修改表1中c字段在表2中字段有相等的情况。
比如
表1
a c
xy 1
dd 2
yy 3
ee 4表2
b d
aa 1
ff 2
rr 3
如果用我的语句,结果会是
表1
a c
aa 1
ff 2
rr 3
4
其中表1.c=4时,表1.a为空。现在我需要不去修改表1.c=4的情况,请问如果修改语句。谢谢了!非常急!!在线等!
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0204N "ADMINISTRATOR.A" 是未定义的名称。 SQLSTATE=42704SQL0204N "ADMINISTRATOR.A " 是未定义的名称。
我的是DB2数据库
update sbfw set sbfw.flag2=guapai.dd from sbfw inner join guapai on sbfw.parentid=guapai.otherflag
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "BEGIN-OF-STATEMENT" 之后发现意外的标记 "update SBFW set
SBFW.FLAG2=guapai.dd"。期望的标记可能包括:"<space>"。 SQLSTATE=42601SQL0104N 在 "BEGIN-OF-STATEMENT" 之后发现意外的标记 "update SBFW set SBFW.FLAG2=guapai.dd"。期望的标记可能包括:"<space> "。
谁想用DB2阿 没办法阿
if object_id('T1')IS NOT NULL DROP TABLE T1
GO
CREATE TABLE T1(a VARCHAR(2), c INT)
INSERT T1 SELECT 'xy', 1
INSERT T1 SELECT 'dd', 2
INSERT T1 SELECT 'yy', 3
INSERT T1 SELECT 'ee', 4
if object_id('T2')IS NOT NULL DROP TABLE T2
GO
CREATE TABLE T2(B VARCHAR(2), D INT)
INSERT T2 SELECT 'aa', 1
INSERT T2 SELECT 'ff', 2
INSERT T2 SELECT 'rr', 3
UPDATE T1 SET
T1.a=T2.b FROM T1, T2 WHERE T1.c=T2.D
SELECT * FROM T1
/*a c
---- -----------
aa 1
ff 2
rr 3
ee 4
*/