检查列的升序

时间:2015-05-16 15:31:18

标签: mysql sql

是否有任何SQL代码可以检查存储在指定列中的值是按升序还是降序排列?

例如,我想检查此表中c列的升序。

enter image description here

1 个答案:

答案 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()结果长度的字符串长度限制(可以通过更改参数来覆盖)。但是,它可能在某些方面很方便。