Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在单个查询中选择一个变量并使用所选变量更新另一个变量?_Sql_Sql Server - Fatal编程技术网

Sql 如何在单个查询中选择一个变量并使用所选变量更新另一个变量?

Sql 如何在单个查询中选择一个变量并使用所选变量更新另一个变量?,sql,sql-server,Sql,Sql Server,我想从表中选择前1行,并在同一查询中更新该行的一列。这就是我使用的select查询 SELECT TOP 1 PageId, PageUrl, CrawlDepth FROM tblPages WHERE MainSiteId = 1 AND UnExpectedCrawlError = 0 AND CrawlStatus = 0 AND CrawlingStarted = 0 现在,该查询

我想从表中选择前1行,并在同一查询中更新该行的一列。这就是我使用的select查询

SELECT TOP 1 PageId,
             PageUrl,
             CrawlDepth
FROM   tblPages
WHERE  MainSiteId = 1
       AND UnExpectedCrawlError = 0
       AND CrawlStatus = 0
       AND CrawlingStarted = 0  
现在,该查询返回1行。我想要的是更新它来更新此行的
CrawlingStarted
列,并将其设置为1。因此,我将选择一行,同时更新其1列


我该怎么做呢?

您可以使用update语句和OUTPUT子句

UPDATE TOP (1) t
SET CrawlingStarted = 1
OUTPUT inserted.PageId, inserted.PageUrl, inserted.CrawlDepth
FROM   tblPages t
WHERE  MainSiteId = 1
       AND UnExpectedCrawlError = 0
       AND CrawlStatus = 0
       AND CrawlingStarted = 0  

请参见我要更新所选行。有了你的回答,我该怎么做?我实际上是在问。。。对不起,我忽略了那个要求。我为这个问题添加了一个解决方案。这个插入的术语从哪里来,谢谢你的回答。投票表决您将在此处找到有关OUTPUT子句的所有信息:“inserted”是一个表示新值的伪表。感谢您的回答,但您的查询出现错误:Msg 156,级别15,状态1,第2行关键字“SET”附近的语法不正确。