Phi*_*ley 1 t-sql sql-server sql-server-2005
*更新*
范围现在略有发展,我现在需要检索字段'Id,uri,linkTo'.这怎么改变了???
我正在使用MS-SQL 2005 db并具有以下存储过程;
CREATE PROCEDURE dbo.getNewAds
(
@region
)
AS
BEGIN
SELECT TOP 1 Id, uri, linkTo FROM Adverts
ORDER BY NEWID()
WHERE adRegion = @region
END
Run Code Online (Sandbox Code Playgroud)
我想在同一个表中为名为adShown的列添加"1",以获取检索到的单个结果.在同一程序中执行此操作的最简单/最快的方法是什么?
提前感谢您提供的任何帮助.
尝试一个命令:
CREATE PROCEDURE dbo.getNewAds
(
@region --lazy, declare type!!
)
AS
BEGIN
UPDATE TOP (1) Adverts
SET adShown = adShown + 1
OUTPUT INSERTED.ID
WHERE adRegion = @region
END
Run Code Online (Sandbox Code Playgroud)
TOP(表达)[PERCENT]
指定要更新的行数或百分比.表达式可以是行的数量或百分比.
TOP表达式中引用的与INSERT,UPDATE,MERGE或DELETE 一起使用的行不按任何顺序排列.
但是在我的有限测试中(测试表中的行数不多),看起来每次更新同一行,并且OP每次都尝试更新不同的行.
试试这个:
CREATE PROCEDURE dbo.getNewAds
(
@region --lazy, declare type!!
)
AS
BEGIN
DECLARE @ID int
--select row to update
SELECT TOP 1
@ID=Id
FROM Adverts
WHERE adRegion = @region
ORDER BY NEWID()
--update and return result set in one command
UPDATE TOP (1) Adverts
SET adShown = adShown + 1
OUTPUT INSERTED.ID
WHERE ID=@ID
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1957 次 |
| 最近记录: |