理想情况下我想这样做:
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子句.
无论如何如何规避这个?
我有一个大的PostgreSQL表,我可以通过Django访问.因为Django的ORM不支持窗口函数,所以我需要将窗口函数的结果作为常规列烘焙到表中.我想做这样的事情:
UPDATE table_name
SET col1 = ROW_NUMBER() OVER ( PARTITION BY col2 ORDER BY col3 );
Run Code Online (Sandbox Code Playgroud)
但我明白了 ERROR: cannot use window function in UPDATE
任何人都可以提出替代方法吗?通过Django的.raw()方法传递窗口函数语法是不合适的,因为它返回一个RawQuerySet,它不支持我需要的其他ORM功能,如.filter().
谢谢.
我有一个blocks用主键调用的表blockid.有数据开始blockid的0.现在的问题是,在另一个表中,blockid's从1开始所以,我需要得到所有的blockid's在blocks将递增1.
如何,我做到这一点?
有没有一个方便的功能来做到这一点,还是我们需要写一个?或者,我是否必须手动更改它(这不会花费太长时间,但有超过100行,所以,如果我不必这样做,我更喜欢它).
谢谢你的一切.
给定这样的更新语句:
UPDATE
UserAssesment
SET
AssessmentDate = comp.AssessmentDate
FROM
UserAssesment ua
INNER JOIN
vw_CompletedAssessments comp
On
ua.NatId = comp.NatId and
ua.FamilyName = comp.ClientLastName and
ua.GivenName = comp.ClientFirstName
WHERE
ua.HasCompletedAssessment <> 0
Run Code Online (Sandbox Code Playgroud)
如果用户可以有多个与join子句匹配的vw_CompletedAssessments记录,哪个记录将用于更新?有没有办法订购它,以便使用最大值或最小值AssessmentDate?