【问题标题】:How to sort based on keyword first?如何首先根据关键字进行排序?
【发布时间】:2014-08-21 14:51:52
【问题描述】:

这是一个示例数据库

First_name      country
Andy            US
Manu            India
Paul            Pakistan
Ramesh          Pakistan
Rich            India

所以,我想要的是从上表中选择所有记录并根据名称显示。 喜欢:-

我想选择首先显示的人名,其国名是印度,然后是美国,巴基斯坦。 如何在单个 SQL 查询中执行此任务?

更新

我不知道有多少个国家。

需要先显示的国家由用户输入。

【问题讨论】:

  • 如果你不知道有多少个国家那么你怎么能给出顺序条款呢?
  • 使用动态 sql 查询编写存储过程的更好方法
  • @Sadikhasan 好吧,假设我的 sql 中有 50 个固定国家/地区?
  • 那么你必须提到国家顺序条款作为@SaharashShah 给出的答案

标签: mysql sql sorting select sql-order-by


【解决方案1】:

可能是这样的

Select * From Table1
Order By CASE WHEN country = 'INDIA' THEN 0
              WHEN country = 'US' THEN 1
              Esle 2
         END;

或者您可以使用 FIELD

Select * From Table1 Order By FIELD(country, 'India', 'US', 'Pakistan') ; 

【讨论】:

    【解决方案2】:

    使用FIELD函数

    试试这个:

    SELECT fitst_name, country 
    FROM tableA 
    ORDER BY FIELD(country, 'India', 'US', 'Pakistan'), fitst_name
    

    【讨论】:

      【解决方案3】:

      使用 CASE 语句为每条记录指定一个排序键。 0 表示国家匹配,1 表示不匹配,因此所需的国家排在第一位。

      select *
      from mytable
      order by case when country = @country then 0 else 1 end, first_name
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-28
        • 2023-04-06
        • 1970-01-01
        • 2019-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        相关资源
        最近更新 更多