SQL Server CE中替代DELETE INNER JOIN的方法

3

我有一些需要转换成SQL Server CE的SQL Server查询语句。我遇到了一些麻烦,这是我正在处理的内容:

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个回答

5

这应该可以使用 IN 来实现:

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

SQL Fiddle演示

虽然我无法在CE中测试,但我认为你原始的连接语法有问题,应该像这样:

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

@40Alpha -- 没关系,很高兴能帮到你。你遇到了什么错误?使用的是哪个查询? - sgeddes
我正在使用C# VS12进行编程,尝试在一个命令中执行多个查询。例如:sqlCeCommand foo = new sqlCeCommand(query1;query2;query3;)。虽然在普通的SQLCommand中可以这样做,但在SQLCE中似乎不支持,所以我只能分别执行三个不同的调用。 - S1r-Lanzelot

3

EXISTS的语法:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接