ORACLE: - “按ASC排序”,但“美国”始终排在第一位

时间:2010-04-21 18:58:31

标签: oracle10g

我必须为国家/地区编写下拉查询。 但美国应该永远是第一位的。 其他国家按字母顺序排列 我尝试了以下查询

SELECT      
           countries_id
        ,countries_name

        FROM get_countries
        WHERE 
             countries_id = 138
        UNION 

        SELECT 
                countries_id
              ,countries_name

         FROM get_countries 
        WHERE   
                  countries_id != 138
        ORDER BY 2 ASC

2 个答案:

答案 0 :(得分:3)

这样的事情可能是:

ORDER BY
  CASE 
     WHEN upper(country_name) = 'USA' then '0'
     ELSE lower(country_name)
  END

这是一个完整的例子

create TABLE countries (country_name VARCHAR2(50));

INSERT INTO countries VALUES ('USA');
INSERT INTO countries VALUES ('India');
INSERT INTO countries VALUES ('Russia');
INSERT INTO countries VALUES ('China');
COMMIT;

SELECT country_name
  FROM countries
ORDER BY
  CASE 
     WHEN upper(country_name) = 'USA' then '0'
     ELSE lower(country_name)
  END

返回:

USA
China
India
Russia

答案 1 :(得分:0)

自从我使用oracle以来已经有一段时间了,但你可以试试ORDER BY countries_name = 'USA', countries_name ASC

<强>校正

抱歉没有用。我将“countries_name”错误地键入为“country_name”,因此它现在可以正常工作。

您也可以使用ORDER BY decode(countries_name, 'USA', 0, 1), countries_name ASC