在SQL Server CE中替换DELETE INNER JOIN

时间:2013-04-30 12:25:59

标签: sql sql-server sql-server-ce subquery

我有一些SQL Server查询需要转换为SQL Server CE。至少我要面对一些麻烦。这就是我正在使用的:

DELETE FROM exSetData 
WHERE exSetData 
INNER JOIN Exercise ON exSetData.exName = Exercise.Name 
WHERE Exercise.Day = @name; 

我开始尝试在SQL Server CE中使用AND EXISTS,但我不相信它能够执行我需要的任务,显然我错误地使用它。

DELETE FROM exSetData 
WHERE EXISTS (Exercise.Name = exSetData.exName AND Exercise.Day = @name)

语法错误。

如何在SQL Server CE中执行相同的查询?

你有什么其他命令可以建议我研究一下吗?我一直在使用Microsoft文档,但在DELETE(在我看来)中并没有那么彻底。

顺便说一句,我正在使用SQL Server CE 4.0。

由于

2 个答案:

答案 0 :(得分:5)

这应该可以使用IN

DELETE FROM exSetData
WHERE exName IN (
    SELECT Name
    FROM Exercise
    WHERE Day = @name )

SQL Fiddle Demo

虽然我无法在CE中测试,但我认为您的原始连接语法已关闭,应该如下所示:

DELETE a
FROM exSetData a
  JOIN exercise e on a.exName = e.Name
WHERE e.Day = @name

答案 1 :(得分:2)

EXISTS的语法:

DELETE FROM exSetData 
WHERE EXISTS 
(
       SELECT * FROM Exercise 
       WHERE Exercise.Name = exSetData.exName 
       AND Exercise.Day = @name
)