【问题标题】:How to order the column value in sql? [duplicate]如何对sql中的列值进行排序? [复制]
【发布时间】:2011-12-29 07:56:56
【问题描述】:

可能重复:
Why do results from a SQL query not come back in the order I expect?

我有这样的表..我的表名是模式。

S.No      type      Id_Section
    1          A        IPS
    2          A        IPS
    3          A        IPS
    4          A        IPS
    1          B        IPS
    2          B        IPS
    3          B        IPS
    1          C        IPS
    2          C        IPS
    5          A        IPS
    4          B        IPS

在这个表中,最后一行是无序的。所以 我需要订购序列号的表,然后键入 = 'A' .. 下单后, 例如我应该这样显示

S.No      type      Id_Section
    1          A        IPS
    2          A        IPS
    3          A        IPS
    4          A        IPS
    5          A        IPS
    1          B        IPS
    2          B        IPS
    3          B        IPS
    4          B        IPS
    1          C        IPS
    2          C        IPS

如何为此编写 sql 查询?请任何人帮助我

【问题讨论】:

  • shree,我认为您可能需要更清楚地传达您想要完成的任务。我认为你很可能想要一些比你所要求的更复杂的东西。此外,我们都阅读了您在其他人的答案上发布的 cmets,因此无需对每个人重复 5 次。
  • 为纯粹的懒惰投反对票 - 一个简单的“sql column order by”谷歌会告诉你答案
  • @shree:在进一步发布之前请阅读FAQ。你很可能会因为发布太多低质量问题而被禁止。

标签: sql


【解决方案1】:

order by type 添加到您的查询中

【讨论】:

  • 嗨,在这里我需要指定 type = 'A' 和 type = 'B'..我必须指定 type..因为我的表 A、B、C 是 "INL"、"BRL" , “CRS”..所以我应该指定类型..怎么做..请告诉我
【解决方案2】:

来自您对 Mithun Sasidharan 和 Connell Watkins 的评论

嗨,在这里我需要指定 type = 'A' 和 type = 'B'..我必须指定 type..因为我的表 A、B、C 是“INL”、“BRL”、“CRS”..所以我应该指定类型..怎么做..请告诉我

您似乎想将值映射到特定顺序。无需添加Sort order 字段或表,您可以使用CASE。即使这样,它们也是两种方法

映射每个值

ORDER BY
   CASE WHEN Type = 'INL' THEN 0
        WHEN Type = 'BRL' THEN 1
        WHEN Type = 'CRS' THEN 2
   END

只把那个放到顶部

ORDER BY
   CASE WHEN Type = 'INL' THEN 0
        ELSE 1
   END,
   Type

【讨论】:

    【解决方案3】:

    SELECT * FROM Table ORDER BY 类型

    【讨论】:

    • 嗨,在这里我需要指定 type = 'A' 和 type = 'B'..我必须指定 type..因为我的表 A、B、C 是 "INL"、"BRL" , “CRS”..所以我应该指定类型..怎么做..请告诉我
    • 嗨,我试过这样... SELECT * FROM 'pattern' ORDER BY type = 'A' and type = 'B' and type = 'c' and s.no...但是我我得到 0 条记录
    • @shree 您的回答似乎表明您需要自定义排序。如果这是您真正需要的,您应该编辑您的答案以包含该信息。
    【解决方案4】:
    select * from table order by type ASC, s.no ASC
    

    【讨论】:

    • 嗨,在这里我需要指定 type = 'A' 和 type = 'B'..我必须指定 type..因为我的表 A、B、C 是 "INL"、"BRL" , “CRS”..所以我应该指定类型..怎么做..请告诉我
    • 如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行,然后单击编辑器上的“代码示例”按钮 ({ })工具栏以很好地格式化和语法突出显示它!
    【解决方案5】:
    SELECT * FROM pattern ORDER BY 2,1
    

    【讨论】:

    • 嗨,在这里我需要指定 type = 'A' 和 type = 'B'..我必须指定 type..因为我的表 A、B、C 是 "INL"、"BRL" , “CRS”..所以我应该指定类型..怎么做..请告诉我
    • 如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行,然后单击编辑器上的“代码示例”按钮 ({ })工具栏以很好地格式化和语法突出显示它!
    【解决方案6】:

    为每一列指定升序或降序

    SELECT * FROM PATTERN ORDER  BY S.No ASC;
    

    【讨论】:

    • 嗨,在这里我需要指定 type = 'A' 和 type = 'B'..我必须指定 type..因为我的表 A、B、C 是 "INL"、"BRL" , “CRS”..所以我应该指定类型..怎么做..请告诉我
    • @shree :因此,如果您想根据类型对其进行排序,您也可以指定... Thpe 和 S.no 或根据您的需要键入!
    • 嗨,我试过这样... SELECT * FROM 'pattern' ORDER BY type = 'A' and type = 'B' and type = 'c' and s.no...但是我我得到 0 条记录
    • 只需给 SELECT * FROM 'pattern' ORDER BY type ASC
    猜你喜欢
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 2020-09-10
    • 2020-02-10
    相关资源
    最近更新 更多