"SQL ORDER BY" 其中 1 和 2 应该被平等对待

"SQL ORDER BY" where 1 and 2 should be handled equal

我有一个 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。

谢谢你的帮助。

你应该首先处理它们是 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