【问题标题】:SQL select with custom ORDER BY data使用自定义 ORDER BY 数据进行 SQL 选择
【发布时间】:2014-03-24 02:03:11
【问题描述】:

我有数据TSATSBTSCTotal。 如何使用Total 始终按字母顺序显示最后一个。 目前我有这个,当然它不起作用。

select * from table where main_id =x group by col-name asc

当然我不能使用desc,因为我还有另一条记录ABCBCACDATotal。 那么如何添加“除非 col-name 为 Total”?或者也许还有其他方法?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    很难确定您的帖子(其中没有太多细节)。但是您可能可以使用 case 语句来评估您的列,并对其进行排序。像

    case when <your column> = 'Total' then 'ZZZ' else <your column> end as SortKey 然后您可以按该新列排序。

    【讨论】:

      【解决方案2】:

      用户order by field

      select * from table 
      where main_id =x 
      order by FIELD( `col-name`, 'Total' ), t;
      

      见:
      SQL Fiddle Example

      参考

      1. MySQL: FIELD(str,str1,str2,str3,...)
        • 返回后面第一个参数的索引(位置) 论据。

      【讨论】:

      • 不知道你能做到。不过它看起来是特定于 MySQL 的。
      • 这不起作用,因为 TSA、TSB、TSC 未排序。
      • @JohnRyann:改成order by Field( colname, 'total' ), t;
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多