【问题】
SqlServer 中,删除表 table1 中和 表table2 相交的记录。两个表都包括三个字段:stuID, type, sysID。
【解决】
DELETE
FROM
Table1
WHERE
EXISTS(
SELECT
t
.
stuID
,
t
.
[type]
,
t
.
sysID
FROM
Table2
AS
t
WHERE
Table1
.
stuID
=
t
.
stuID
AND
Table1
.
[type]
=
t
.
[type]
AND
Table1
.
sysID
=
t
.
sysID
);
【错误的写法】
下面的例子中,table2是table1的子集,语句本意是为了删除table1中所有和table2相同的记录。
DELETE
FROM
Table1 // 这里写成 FROM Table1 AS t1 也是会报错的。不能在这里取alias
WHERE
EXISTS(
SELECT
t2
.
stuID
,
t2
.
[type]
,
t2
.
sysID
FROM
Table2
AS
t2
);