選擇

2017-06-01 50 views
0

我有選擇選擇

SELECT e.*, b.f1, b.fee FROM eq e JOIN br b ON e.country = b.country 
WHERE e.name= 'some' AND b.fee = 1 

我需要重寫選擇一個替代AND b.fee = 1AND b.fee = min fee from b

我不能....我可以AND b.fee = (SELECT MIN(fee)FROM br)但不好解決

+0

編輯你的問題,並提供樣本數據和預期的結果。 –

回答

2

如果你只想要一個行,那麼就使用limit

SELECT e.*, b.f1, b.fee 
FROM eq e JOIN 
    br b 
    ON e.country = b.country 
WHERE e.name = 'some' 
ORDER BY b.fee 
LIMIT 1; 

如果你想以最小的自由都行,那麼這裏是一個方法:

SELECT e.*, b.f1, b.fee 
FROM eq e JOIN 
    (SELECT b.*, MIN(fee) OVER() as minfee 
     FROM br b 
    ) b 
    ON e.country = b.country 
WHERE e.name = 'some' AND b.fee = minfee; 
+0

ORDER BY b.fee LIMIT 1; - 如果有很多記錄,這不是一項繁重的操作? – user5620472

+0

@ user5620472。 。 。如果你沒有「收費」指數,它幾乎與其他獲得最低限度的方式一樣昂貴。如果您有索引,則順序可能會或可能無法利用它。 –