在SQL Server CE中替换DELETE INNER JOIN

S1r*_*lot 3 sql sql-server subquery sql-server-ce

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

DELETE FROM exSetData 
WHERE exSetData 
INNER JOIN Exercise ON exSetData.exName = Exercise.Name 
WHERE Exercise.Day = @name; 
Run Code Online (Sandbox Code Playgroud)

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

DELETE FROM exSetData 
WHERE EXISTS (Exercise.Name = exSetData.exName AND Exercise.Day = @name)
Run Code Online (Sandbox Code Playgroud)

语法错误.

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

还有其他命令你建议我调查一下吗?我一直在使用Microsoft文档,但它DELETE(在我看来)并不是那么彻底.

我顺便使用SQL Server CE 4.0.

谢谢

sge*_*des 5

这应该使用IN:

DELETE FROM exSetData
WHERE exName IN (
    SELECT Name
    FROM Exercise
    WHERE Day = @name )
Run Code Online (Sandbox Code Playgroud)

SQL小提琴演示

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

DELETE a
FROM exSetData a
  JOIN exercise e on a.exName = e.Name
WHERE e.Day = @name
Run Code Online (Sandbox Code Playgroud)