是否有任何SQL代码可以检查存储在指定列中的值是按升序还是降序排列?
例如,我想检查此表中c列的升序。
答案 0 :(得分:5)
不,没有具体的语法。可能最简单的方法是获取先前的值,然后检查。以下是使用相关子查询的一种方法:
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()
结果长度的字符串长度限制(可以通过更改参数来覆盖)。但是,它可能在某些方面很方便。