按逻辑顺序排序

时间:2016-08-22 12:09:54

标签: mysql sql

我有一个包含两列的表。其中一列包含文本,另一列包含整数值。

我需要这个表按整数值排序(更高的值到顶部),但如果整数值等于0,那么我需要按字母顺序排序该行。让我们说我有这张桌子

TextCol|IntCol|
-------|------|
Delta  |  0   |
Alpha  |  0   |
Beta   |  3   |
Sierra |  2   |
Gama   |  1   |

现在我需要这个:

TextCol|IntCol|
-------|------|
Beta   |  3   |
Sierra |  2   |
Gama   |  1   |
Alpha  |  0   |
Delta  |  0   |

这会是什么SQL查询?

2 个答案:

答案 0 :(得分:5)

您可以使用CASE WHEN

使用以下解决方案
SELECT * FROM table 
ORDER BY intColumn DESC, 
         CASE WHEN intColumn = 0 THEN stringColumn END ASC

您可以在此处找到一个示例: http://sqlfiddle.com/#!9/a982a/1

答案 1 :(得分:2)

试试这个:

  • ISNULL(IntCol,0)描述:通过更高的值为整数值提供更低的值。如果任何值为null,则它将转换为“0”
  • TextCol :它会将文本列命名为升序值。

    @echo off
    setlocal 
    setlocal enabledelayedexpansion 
    set "search=&" 
    set "replace= AND " 
    set "textfile=12739*" 
    set "newfile=Output.txt" 
    (
      for /f "delims=" %%i in (%textfile%) do ( 
        set "line=%%i" 
        set "line=!line:%search%=%replace%!" 
        echo(!line!
      )
    ) > "%newfile%" 
    del %textfile% 
    rename %newfile% %textfile% 
    endlocal