【问题标题】:What is Causing the Incorrect Syntax near SELECT error?是什么导致 SELECT 错误附近的语法不正确?
【发布时间】:2019-10-03 18:01:23
【问题描述】:

我在此查询中的 Select 附近收到不正确的语法错误。这里的目标是批量删除alohaftplog中的1000行。

DECLARE @Batch INT = 1000
DECLARE @DateLimit DATETIME = CONVERT(VARCHAR(15), GETDATE() - 30, 101)
DECLARE @Cnt INT = 0

SET @Cnt = SELECT COUNT(*) FROM AlohaFtpLog WHERE DATE < @DateLimit 

WHILE @Cnt > 0
BEGIN
    DELETE TOP(@Batch) FROM AlohaFtpLog WHERE DATE < @DateLimit
    SET @Cnt = SELECT COUNT(*) FROM AlohaFtpLog WHERE DATE < @DateLimit
END

【问题讨论】:

    标签: .net sql-server tsql


    【解决方案1】:
    SET @Cnt = SELECT COUNT(*) FROM AlohaFtpLog WHERE DATE < @DateLimit
    

    需要:

    SET @Cnt = (SELECT COUNT(*) FROM AlohaFtpLog WHERE DATE < @DateLimit)
    

    或者:

    SELECT @Cnt = COUNT(*) FROM AlohaFtpLog WHERE DATE < @DateLimit
    

    【讨论】:

      【解决方案2】:
      SELECT @Cnt = COUNT(*) FROM AlohaFtpLog WHERE DATE < @DateLimi
      

      【讨论】:

      • 虽然你是对的......在回答时,请提供一些背景信息,说明为什么你的答案是正确的,并向 OP 展示他们需要在哪里更正他们的工作以不产生任何错误。继续发布答案!
      【解决方案3】:

      我很确定您需要一组括号。

      SET @Cnt = (SELECT COUNT(*) FROM AlohaFtpLog WHERE DATE < @DateLimit)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 2013-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多