簡體   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