gpt4 book ai didi

SQL Server - 在 WHERE 子句中使用谓词的替代方法

转载 作者:行者123 更新时间:2023-12-04 14:27:14 25 4
gpt4 key购买 nike

我想删除我的 DemoTable 中的所有事件,其中该交互的第一个事件和最后一个事件之间的差异大于 30 分钟。我编写了一个 select 语句来查看所有这些事件,并使用 HAVING 关键字来获取 DATEDIFF 大于 30 分钟的事件。

由于我不能在删除中使用 HAVING 或在 WHERE 子句中使用谓词,所以在下面的错误代码中执行我想执行的操作的最佳替代/正确方法是什么...

DELETE
FROM dbo.DemoTable dt
WHERE DATEDIFF(MINUTE, MIN(dt.utc), MAX(dt.utc)) > 30
GROUP BY dt.interactionId;
GO

编辑:感谢大家的建议!

最佳答案

一种快速而肮脏的方法是这样的:

DELETE FROM
dbo.DemoTable
WHERE
dto.DemoTable.YourPrimaryKey IN
(
SELECT
YourPrimaryKey
FROM
-- your query here
)

这仅适用于非复合主键。

关于SQL Server - 在 WHERE 子句中使用谓词的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49659034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com