2017-05-05 69 views
0

我真的不知道標題是否反映了我的問題,所以如果您提出更好的建議,請繼續。按兩列最大值排序

我有一個表在有兩列代表價值SQL:

rent_cost 
sale_cost 

我需要將其全部選中不管他們被出租或出售。這部分是可以的,但是我需要按價格定購它們(不管它是租賃還是出售)。事情有時一排排可能會或不會有一個值,所以我真的無法破解這一個。

我需要訂購它們,就好像價格只有一個價值而不是兩個。

{ 
id:1, 
rent_value: 3000, 
sale_value: null 
}, 
{ 
id:2, 
rent_value: 2200, 
sale_value:4500 
}, 
{ 
id:3, 
rent_value: null, 
sale_value: 3300 
}, 

如果我選擇都是按降序排列的價格價值,我應該得到的回報[2,3,1]

PD:我使用MySQL。

回答

1

您可以使用greatest(),但你必須要小心NULL值:

order by greatest(coalesce(rent_value, 0), coalesce(sale_value, 0)) desc 
+0

感謝您的輸入。您的解決方案似乎應該可以工作,但事實並非如此。 例如,在此示例DB中運行: http://sqlfiddle.com/#!9/ab1c1e/1/0 我應該得到[4,1,2,3],這是正確的降序最高的價值(不論是出租還是出售)。 任何想法可能會發生什麼? – user2430929

+0

請修改您的問題 – Strawberry

+1

您的解決方案是正確的。這只是因爲值列被定義爲varchar,它的表現方式很奇怪。將它們更改爲int按預期工作。 – user2430929