繁体   English   中英

PostgreSQL查询以随机顺序返回

[英]postgresql query returning in random order

我正在尝试创建一个SQL查询来查询数据库并返回各个机场的信息。

基本查询工作正常,但是结果以随机顺序返回。

SELECT * FROM airportdata WHERE airportcode LIKE 'LHR' OR airportcode LIKE 'HKG'

按传递给查询的顺序返回它们非常重要(即,LHR的机场数据是第一个返回的结果,其次是HKG的机场信息),但是我找不到任何有效的ORDER BY。

显然我应该使用FIND_IN_SET,但是我尝试了所有变体,但无法正常工作!

SELECT * FROM airportdata WHERE airportcode LIKE 'LHR' OR airportcode LIKE 'HKG' ORDER BY FIND_IN_SET(airportcode,'LHR,HKG')

谁能看到我在做什么错? 谢谢!

我建议您使用IN 然后,您可以使用

SELECT *
FROM airportdata
WHERE airportcode IN ('LHR', 'HKG')
ORDER BY position(airportcode in 'LHR,HKG')

(这是安全的,因为机场代码应为3个字符且没有逗号。)

如果要使用LIKE (支持通配符),则可以执行以下操作:

SELECT ad.*
FROM airportdata ad JOIN
     (VALUES ('LHR', 1),
             ('HKG', 2)
     ) v(pattern, pos)
     ON v.airportcode LIKE pattern
ORDER BY pos;

这确实存在重复的风险,因为一个代码可以(理论上)匹配多个模式。 如果这是真正的风险,则需要解释您喜欢的模式。

使用此查询:

SELECT * 
FROM airportdata 
WHERE airportcode LIKE 'LHR' OR airportcode LIKE 'HKG' 
ORDER BY CASE WHEN airportcode LIKE 'LHR' THEN 1 ELSE 0 END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM