2016-12-21 38 views
0

我在表中有兩列,分別叫做salepriceregularprice。此表包含基於拍賣的網站的列表記錄。如果用戶決定他們可以輸入低於regularpricesaleprice,或者他們可以簡單地輸入regularprice並且空出saleprice如果一個不是空的其他字段排序2字段

我建立了一個select,允許用戶根據價格查看記錄從低到高或從高到低。問題是如果有一個regularprice那麼saleprice字段將是空的。如果有saleprice那麼regularpricesaleprice字段將包含一個值,當然saleprice將會更低。

我想根據用戶選擇的內容返回記錄,但我不能讓我的聲明返回正確搜索這兩列的記錄。

基本上我需要排序,如果saleprice不爲空,然後使用regularprice否則只是使用regularprice

這裏是我的例子,我想出了迄今爲止

低到高

SELECT * FROM market_posts 
WHERE live = 1 AND category = '1' 
ORDER BY IF(saleprice != '',saleprice,regularprice) ASC 

從高到低

SELECT * FROM market_posts 
WHERE live = 1 AND category = '1' 
ORDER BY IF(saleprice != '',saleprice,regularprice) DESC 
+1

'IF(saleprice IS NOT NULL,saleprice,regularprice)'? –

+0

取決於「用戶選擇的內容」,可以通過幾種不同的方法完成此操作您可以更清楚地瞭解用戶選擇的內容或這些選項。其他方面,你會在這裏得到的答案將是一個最好的猜測 – apesa

回答

2

如果您salepriceNULL如果沒有設置它,然後用COALESCE

SELECT * 
FROM market_posts 
WHERE live = 1 AND category = '1' 
ORDER BY COALESCE(saleprice, regularprice) ASC -- OR DESC 
相關問題