相关疑难解决方法(0)

如何使用ms sql更新和订购

理想情况下我想这样做:

UPDATE TOP (10) messages SET status=10 WHERE status=0 ORDER BY priority DESC;
Run Code Online (Sandbox Code Playgroud)

英文:我想从数据库中获取前10个可用(状态= 0)消息并锁定它们(状态= 10).应首先获得具有更高优先级的消息.

遗憾的是,MS SQL不允许更新中的order by子句.

无论如何如何规避这个?

sql t-sql sql-server sql-order-by sql-update

49
推荐指数
3
解决办法
9万
查看次数

更新表sql server中的前1条记录

我的查询

UPDATE TOP (1) TX_Master_PCBA  
SET TIMESTAMP2 = '2013-12-12 15:40:31.593'
WHERE SERIAL_NO IN ('0500030309') 
ORDER BY TIMESTAMP2 DESC 
Run Code Online (Sandbox Code Playgroud)

使用表中的serial_NoTX_Master_PCBA我有10条记录,但我想更新最新TIMESTAMP2的当前日期时间.

上面的查询抛出错误:

关键字"TOP"附近的语法不正确.

sql-server sql-server-2008

31
推荐指数
6
解决办法
13万
查看次数

带有ORDER BY的SQL UPDATE TOP?

我有以下查询:

UPDATE TOP (@MaxRecords) Messages 
SET    status = 'P' 
OUTPUT inserted.* 
FROM   Messages 
where Status = 'N'
and InsertDate >= GETDATE()
Run Code Online (Sandbox Code Playgroud)

在Messages表中有优先级列,我想首先选择高优先级消息.所以我需要一个ORDER BY.但是我不需要在更新运行之前对输出进行排序,而是对数据进行排序.

据我所知,不可能将ORDER BY添加到UPDATE语句中.还有其他想法吗?

sql sql-server

24
推荐指数
2
解决办法
3万
查看次数

如果一行受到影响,如何执行UPDATE?

我在SQL Server中有一个表,其中有一个PK(ID)和另一个(逻辑)主键由其他几列(尽管没有UNIQUE约束).比方说,表PERSON,PK = PERSON_ID,然后NAME,SURNAME,AGE

我想有可能说

UPDATE PERSON SET AGE = 43 WHERE NAME = 'XX' AND SURNAME = 'YYY'
Run Code Online (Sandbox Code Playgroud)

并且只有在'updated rows'= 1时执行它,否则(超过1行)执行完全没有执行.问题是我不确定NAME和SURNAME是否唯一地标识了一条记录,我无法先验地说出来.

想法?

t-sql sql-server

2
推荐指数
4
解决办法
4809
查看次数