【问题标题】:"SQL ORDER BY" where 1 and 2 should be handled equal"SQL ORDER BY" 其中 1 和 2 应该被同等处理
【发布时间】:2016-08-26 23:43:33
【问题描述】:

我有一个 SELECT 查询,我在其中按几列排序

SELECT * FROM tablex
WHERE
    date = '$date' AND
    type = '1'
ORDER BY
    column_1 ASC,
    CASE column_2 WHEN '00:00:00' THEN 'b' ELSE 'a' END,
    column_2 ASC,
    column_3 DESC

column_1 中的值可以是 1 到 4 之间的数字,现在我希望值 '1' 和 '2' 被同等处理。所以他们应该被当作都是 '1' e.x. 来处理。

感谢您的帮助。

【问题讨论】:

  • 你已经证明你可以使用case。您尝试执行的操作与查询中已有的内容有何不同?
  • 使用另一个 case 表达式。
  • 查看我的评论以获得答案,然后你就知道为什么了 :) 无论如何感谢你的时间 - 不知道你为什么不赞成我的问题......

标签: sql sorting select sql-order-by


【解决方案1】:

你应该首先处理它们是1或2的情况,使用CASE

SELECT * FROM tablex
WHERE
    date = '$date' AND
    type = '1'
ORDER BY
    CASE WHEN column_1 IN(1, 2) THEN 0 ELSE column_1 END ASC,
    CASE column_2 WHEN '00:00:00' THEN 'b' ELSE 'a' END,
    column_2 ASC,
    column_3 DESC

【讨论】:

  • 有完全相同的查询,但没有“ASC”结尾 - 不知道可以将它组合到 CASE 表达式中 - 所以我的结果与我的问题中的查询相同.现在我刚刚删除了“column_1 ASC”,这很好:) 谢谢一堆!编辑:是的,这就是我所说的 - 像这样工作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多