在 Informix 中使用 WHERE NOT EXISTS in same table 和复合 PK
Use WHERE NOT EXISTS in same table with composite PK in Informix
我有一个 table 在 Informix 数据库中包含 5 个字段的组合,我需要复制一些值并仅更改 rm_id
字段。那部分已经在工作了。尝试复制它时出现问题,并且已经存在具有这 5 个值的一行,并且我收到 Unique constraint violated
错误。我开始为此写一个查询,我这样做了:
SELECT *
FROM table t1
WHERE t1.rm_id = 249
AND NOT EXISTS (SELECT t2.prop, t2.rb_code, t2.bm_id, t2.bl, t2.rm_id
FROM table t2
WHERE t2.prop = t1.prop, t2.rb_code = t1.rb_code, t2.bm_id = t1.bm_id, t2.bl = t1.bl, t2.rm_id = t1.rm_id);
我收到语法错误,但我的查询找不到任何问题;有什么方法可以在 Informix 中做这样的事情吗?
使用 AND 而不是逗号来分隔 WHERE 子句中的条件。
SELECT *
FROM table t1
WHERE t1.rm_id = 249
AND NOT EXISTS (SELECT t2.prop, t2.rb_code, t2.bm_id, t2.bl, t2.rm_id
FROM table t2
WHERE t2.prop = t1.prop
AND t2.rb_code = t1.rb_code
AND t2.bm_id = t1.bm_id
AND t2.bl = t1.bl
AND t2.rm_id = t1.rm_i
);
此外,对于 [NOT] EXISTS 操作,将什么列为 select 列表项并不重要。按照惯例列出NOT EXISTS(SELECT * FROM …)
.
我有一个 table 在 Informix 数据库中包含 5 个字段的组合,我需要复制一些值并仅更改 rm_id
字段。那部分已经在工作了。尝试复制它时出现问题,并且已经存在具有这 5 个值的一行,并且我收到 Unique constraint violated
错误。我开始为此写一个查询,我这样做了:
SELECT *
FROM table t1
WHERE t1.rm_id = 249
AND NOT EXISTS (SELECT t2.prop, t2.rb_code, t2.bm_id, t2.bl, t2.rm_id
FROM table t2
WHERE t2.prop = t1.prop, t2.rb_code = t1.rb_code, t2.bm_id = t1.bm_id, t2.bl = t1.bl, t2.rm_id = t1.rm_id);
我收到语法错误,但我的查询找不到任何问题;有什么方法可以在 Informix 中做这样的事情吗?
使用 AND 而不是逗号来分隔 WHERE 子句中的条件。
SELECT *
FROM table t1
WHERE t1.rm_id = 249
AND NOT EXISTS (SELECT t2.prop, t2.rb_code, t2.bm_id, t2.bl, t2.rm_id
FROM table t2
WHERE t2.prop = t1.prop
AND t2.rb_code = t1.rb_code
AND t2.bm_id = t1.bm_id
AND t2.bl = t1.bl
AND t2.rm_id = t1.rm_i
);
此外,对于 [NOT] EXISTS 操作,将什么列为 select 列表项并不重要。按照惯例列出NOT EXISTS(SELECT * FROM …)
.