【问题标题】:Trying to combine select & Update尝试结合选择和更新
【发布时间】:2019-05-15 19:41:53
【问题描述】:

我有一个 select 语句,可以根据条件获取一些记录

UPDATE A
SET A.Status = 3
from dbo.Table A
JOIN (Select fkID, count(1) as total
        from dbo.TableLogs A
        Group by fkID
        having count(1) > 10) B
  on B.fkID = A.id
Where A.status = 2

select status,id,filename from table 
where status not in (1,3)

我想将这两个查询合并到一个语句中,如果文件总数超过 10,则将状态更新为 3 并继续过滤文件以仅获取状态既不是 1 也不是 @ 的文件987654323@

【问题讨论】:

  • 不清楚你想要达到什么。你喜欢创建存储过程吗?
  • 为什么它需要在单个命令中发生?我问是因为没有更新和选择命令。
  • Update 将更新行,但不返回任何行。 Select 将返回行,但不会更新任何行。如果要更新并返回行,则需要两个命令。
  • 我需要一种存储过程,它可以同时做这两件事,首先它会验证,然后如果计数超过 10,它会更新,最后,它会做一个选择返回我查询数据,如果我想向其中添加新过滤器,则选择应该能够接受参数
  • 存储过程将允许您完全做到这一点:具有可预测结果的顺序逻辑步骤。始终可以添加和更新参数和代码。不知道这让我们对这个问题有什么看法。

标签: sql sql-server database sql-server-2016


【解决方案1】:

您没有正确链接表格。我不确定你想从你的问题中运行的确切查询,但是,尝试从这个开始:

UPDATE A
SET A.Status = 3
FROM A, (Select fkID, count(1) as total
        from dbo.TableLogs A
        Group by fkID
        having count(1) > 10) AS B
WHERE B.[fkID] = A.[id]
AND A.status = 2
;

您可以在代码底部添加更多 where 语句。

干杯,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多