有没有SQL代码可以检查存储在指定列中的值是升序还是降序?
例如,我想检查此表中 c 列的升序。
最佳答案
不,没有具体的语法。可能最简单的方法是获取以前的值,然后检查它。这是使用相关子查询的一种方法:
select name,
(case when sum(c_prev > c) = 0 then 'All Ascending'
else 'Oops'
end)
from (select t.*,
(select t2.c
from thistable t2
where t2.name = t.name and t2.year < t.year
order by t2.year desc
limit 1
) as c_prev
from thistable t
) t
group by name;
这是另一种方法:
select t.name,
(case when group_concat(c order by c) = group_concat(c order by year)
then 'All Ascending'
else 'Oops'
end)
from thistable t
group by t.name;
这在处理相等值的方式上略有不同。此外,这受 group_concat()
结果长度的字符串长度限制(可以通过更改参数来覆盖)。但是,它可能对某些用途很方便。
关于mysql - 检查列的升序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30277493/