我要求按字母顺序排列国家/地区列表,但要在TOP上使用特定国家/地区。 在该国家之后,应按字母顺序排序。 实施例
India
Afghanistan
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antigua and Barbuda
Argentina
Armenia
Aruba
........... 我尝试了这里提供的答案Sorting certain values to the top 但它没有用 我正在使用PL / SQl开发工具。 Thanx in Advance
答案 0 :(得分:12)
这样的事情应该有效:
MySQL VERSION
ORDER BY (country = 'India') DESC, country ASC
- 或 -
ORDER BY
CASE
WHEN country = 'India' THEN 1
ELSE 2
END,
country ASC
ORACLE VERSION
ORDER BY
CASE
WHEN country = 'India' THEN 1
ELSE 2
END
或者您可以在顶部拥有多个特定值:
ORDER BY
CASE
WHEN country = 'India' THEN 1
WHEN country = 'United Kingdom' THEN 2
ELSE 3
END
答案 1 :(得分:1)
如果NULL
列中没有country
值,则您可以使用该值:
ORDER BY NULLIF(country, 'India') ASC NULLS FIRST
答案 2 :(得分:0)
Thanx全部回复。 这样我就试过了。
SELECT *
FROM (SELECT L.LOOK_UP_CODE, TO_CHAR(L.CITY) LOOK_UP_DESC
FROM GHCM_IN_CITIES_MAPPING_DTLS L, GHCM_LOOK_UP_TBL A
WHERE L.ENABLED_FLAG = 'Y'
AND L.STATE = IN_STATE
AND A.LOOK_UP_TYPE = 'LOCATION_VALUE'
UNION
SELECT A.LOOK_UP_CODE LOOK_UP_CODE,
A.LOOK_UP_DESC LOOK_UP_DESC
FROM GHCM_LOOK_UP_TBL A
WHERE A.LOOK_UP_TYPE = 'LOCATION_VALUE')
ORDER BY (CASE
WHEN LOOK_UP_DESC = 'Others' THEN
'ZZZ'
ELSE
LOOK_UP_DESC
END);
它完美运作。
答案 3 :(得分:0)
使用FIELD
函数可以另一种简单的方法来获得所需的结果。
如果值匹配,通常FIELD函数将返回TRUE。
例如,如果表结构是这样的,
ORDER BY FIELD(first_name, 'PENELOPE')
将按FIELD的顺序返回值的位置。由于PENELOPE
位于第一个位置,它将返回1,当FIELD内不存在该值时,它将返回0,
ORDER BY FIELD(first_name,' PENELOPE')DESC
如果您想在顶部对多个项目进行排序,则可以使用
ORDER BY FIELD(first_name,' PENELOPE',' BETTE')DESC
在上面的示例中,带有first_name
的{{1}}将首先出现,PENELOPE
带有first_name
,然后是其他值。
答案 4 :(得分:0)
你可以试试这个。
SELECT *
FROM `country`
ORDER BY CASE WHEN countyName = 'india' THEN 1 ELSE 2 END, countyName ASC