【发布时间】:2013-04-24 07:21:54
【问题描述】:
我想选择所有存在于特定表中但不存在于另一个表中的行来删除它们。
我编写了以下查询,但我得到两个表中都存在行!
SELECT UNIQUE b.values_key FROM request_fo a INNER JOIN rm_trans b
ON b.values_key != a.req_year || ',' || a.req_ser
AND b.taskcode = 19
AND b.values_key IS NOT NULL
AND a.req_year IS NOT NULL
AND a.req_ser IS NOT NULL
我想用下面的方法删除request_fo中存在而rm_trans中不存在的数据:
DELETE request_fo
FROM request_fo a
INNER JOIN
rm_trans b
ON b.values_key != a.req_year || ',' || a.req_ser
AND b.taskcode = 19
AND b.values_key IS NOT NULL
AND a.req_year IS NOT NULL
AND a.req_ser IS NOT NULL
是这样吗??
【问题讨论】:
-
不同的 DBMS 对 DELETE 操作有不同的语法,尤其是带有连接操作的 DELETE。您不能自然而然地期望 MS SQL Server 中有效的东西在 Oracle、DB2、Informix、MySQL、PostgreSQL 中有效——它通常但不一定在 Sybase 中有效。
-
@JonathanLeffler:那请问
DELETE a FROM request_fo a LEFT JOIN rm_trans b ON b.values_key = a.req_year + ',' + a.req_ser AND b.taskcode = 19 WHERE b.values_key IS NULL;informix的语法是什么