我需要通过某个ORDER BY()对表进行排序,然后更新一列,以便如果行在前n行中,则此列的新值为EXPR1(),否则为EXPR2()。目前我在两个更新语句中执行此操作。是否有可能使它比这更有效(即避免分类两次,而不引入另一个低效率)?
我目前的解决方案:
UPDATE tbl
SET c = expr1()
ORDER BY sorter ASC
LIMIT n
然后(假设m =(SELECT COUNT(*)FROM tbl) - n)
UPDATE tbl
SET c = expr2()
ORDER BY sorter DESC
LIMIT m