mysql - 检查列的升序

标签 mysql sql

有没有SQL代码可以检查存储在指定列中的值是升序还是降序?

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

enter image description here

最佳答案

不,没有具体的语法。可能最简单的方法是获取以前的值,然后检查它。这是使用相关子查询的一种方法:

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/

相关文章:

php - var_dump 返回 bool(false) 和 @mysql_ping() 返回 true,为什么?

PHP MySQL根据用户复选框将行id保存到数据库

mysql - Azure Advisor for MySql 建议将 TLS 版本更新到 1.2 - 服务器已在运行 'tls_version: TLSv 1.2'

mysql - 如何比较3个表并在mysql中合并它们的列

mysql - 如何修复where子句中的多个子查询

php - ql-No Mysql 错误但数据库表未更新

php - 跨客户端用户的用户身份验证

php - 在 PHP 和 MySQL 中处理时区?

sql - 给定示例结束日期和季度编号,计算日期的季度

mysql - 计数为 0 的结果未出现