2016-08-17 46 views
1

在我的項目,我需要顯示與屬性「狀態== 2」中的優先級,然後按日期順序數據,這裏的模型:如何在Sequelize for MySQL中訂購如果我想優先顯示某些條件?

var Model = sequelize.define('Model', { 
    id:{type: sequelize.INTEGER()}, 
    status:{type: sequelize.INTEGER()}, 
    date:{type: sequelize.DATE} 
}); 

狀態開始從0到5,和當前的排序:

Model.findAll({ 
    order: [ 
     ['date','DESC'] 
    ] 
}); 

例子中,有三個數據:

data1:{id:1,status:2,date:2016-08-16}, 
data2:{id:2,status:3,date:2016-08-17}, 
data3:{id:3,status:2,date:2016-08-18}, 
data4:{id:4,status:1,date:2016-08-16} 

和預期輸出後順序將是這樣的:

data3:{id:3,status:2,date:2016-08-18}, 
data1:{id:1,status:2,date:2016-08-16}, 
data2:{id:2,status:3,date:2016-08-17}, 
data4:{id:4,status:1,date:2016-08-16} 

我該怎麼辦?請幫幫我。

+0

你可以添加一個預期輸出的例子嗎?也許這有助於掌握你想要達到的目標。 – Fuzzzzel

+0

@Fuzzzzel謝謝你!我只是添加一個例子,請看看。 –

回答

0

這將獲得狀態等於2的所有值,然後它將按日期排序。

Model.findAll({ 
    order: [ 
     ['status':'ASC'], 
     ['date':'DESC'] 
    ] 
}) 
+0

對不起,我沒有明確表示我的問題,我希望獲得各種狀態的數據,但優先顯示「狀態== 2」,我已更新問題中的示例,請查看,謝謝! –

+0

這可以解決問題!謝謝!但是我仍然想知道如果其他數據的狀態小於2,我怎麼能把這些數據放在後面呢? –

+0

然後你沒有排序。您更新(再次)的示例輸出不可能用於排序或任何單個查詢。它看起來是隨機的,因爲它沒有按狀態或日期進行排序。 –