【发布时间】:2018-09-01 21:04:47
【问题描述】:
我在 Oracle 上有下表
CREATE TABLE t1(code varchar2(3), flag1 varchar2(30));
INSERT INTO t1(code, flag1) values ('AAA', NULL);
INSERT INTO t1(code, flag1) values ('BBB', NULL);
下面的选择按预期工作,结果为 1 行
SELECT *
FROM t1
WHERE code IN (SELECT 'AAA'
FROM DUAL);
但是下面的 Update 语句不起作用(它不会更新任何行)
UPDATE t1
SET flag1 ='T'
WHERE code IN (SELECT 'AAA'
FROM DUAL);
我正在 sqlfiddle.com (Oracle 11g) 中运行我的测试。
你知道为什么会这样吗? 我想我在这里遗漏了一些明显的东西..
【问题讨论】:
-
无法复制,适合我。
-
你遗漏了一些东西,但我不知道是什么因为 -
update实际上更新 1 行。 -
无关,但是:子选择完全没用。
where code in ('AAA')可以正常工作。 -
sqlfiddle 不应该用于测试 IMO,因为它有时与数据库引擎的功能不完全相同
-
@Athafoud SqlFiddle 不会持久化数据,每次运行脚本都会显示结果并回滚
标签: sql oracle11g sql-update