javascript - postgresql 查询以随机顺序返回
问题描述
我正在尝试创建一个 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;
这确实存在重复的风险,因为一个代码(理论上)可以匹配多个模式。如果这是一个真正的风险,你需要解释你喜欢哪种模式。
推荐阅读
- hyperledger-fabric - 对等通道创建 - 仅评估失败 0 个策略得到满足 Hyperledger Fabric
- asp.net-core-mvc - Serilog:为每个请求创建和跟踪唯一的日志上下文?
- python - 如何通过对两列施加的多个标准删除 Pandas 数据框中的行?
- regex - 如何从用户当前使用的任何代码编辑器中获取文本?- 自动
- html - 未在函数内定义的变量
- reactjs - 在开发期间无法使用 Webpack4 访问 %PUBLIC_URL%/favicon.ico
- database - Laravel 5.5 + MongoDb Atlas 集群
- java - eclipse "导入静态 org.lwjgl.glfw.GLFW.*;" 破包
- java - 多重继承泥潭——实例化了哪个类?
- python - 在 Windows 上使用 Conda 安装 GDAL