Oracle10g 甲骨文:-';按ASC选择订单';但是';美国';总是第一
我必须为国家写一个下拉查询。 但美国应该永远是第一。 其余国家按字母顺序排列 我尝试了以下查询Oracle10g 甲骨文:-';按ASC选择订单';但是';美国';总是第一,oracle10g,Oracle10g,我必须为国家写一个下拉查询。 但美国应该永远是第一。 其余国家按字母顺序排列 我尝试了以下查询 SELECT countries_id ,countries_name FROM get_countries WHERE countries_id = 138 UNION SELECT countries_id
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
可能是这样的:
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
可能是这样的:
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
我已经有一段时间没有与oracle合作了,但您可以尝试
按国家/地区名称='USA',国家/地区名称ASC排序
校正
对不起,那没用。我把“countries\u name”错误地输入为“country\u name”,所以它现在可以工作了
您也可以使用按解码排序(国家名称,'USA',0,1),国家名称ASC
我与oracle合作已有一段时间了,但您可以尝试按国家名称='USA',国家名称ASC排序
校正
对不起,那没用。我把“countries\u name”错误地输入为“country\u name”,所以它现在可以工作了
您还可以使用按解码顺序(国家名称,'USA',0,1),国家名称ASC
当上级(国家名称)='USA'然后是'0'时按大小写顺序,否则下级(国家名称)ASC ENDit抛出错误keyword@Robert-参见我上面的完整示例,我刚刚在Oracle 10g上测试了它,效果很好。非常感谢!你完全正确。现在我想知道这个CASE/WHEN/ELSE会影响查询的速度吗?@Robert-您应该在country\u name(或表中的countries\u name)上有一个索引,这样可以高效地进行排序。速度应该可以,但您可以自己测试它,并在性能因某种原因而变差时运行“解释计划”查看查询计划。按大小写排序当上限(国家/地区名称)=“USA”然后是“0”否则下限(国家/地区名称)ASC ENDit抛出错误keyword@Robert-参见我上面的完整示例,我刚刚在Oracle 10g上测试了它,效果很好。非常感谢!你完全正确。现在我想知道这个CASE/WHEN/ELSE会影响查询的速度吗?@Robert-您应该在country\u name(或表中的countries\u name)上有一个索引,这样可以高效地进行排序。速度应该可以,但如果性能因某种原因而变差,您始终可以自己测试并运行“解释计划”查看查询计划。@Jon-使用它在Oracle 10g上运行时会出现语法错误。@Jon-使用它在Oracle 10g上运行时会出现语法错误。