2017-02-27 31 views
0

我想弄清楚如何使用order屬性來訂購我的子查詢和父查詢。使用當前設置,訂單子句會對父查詢進行排序,但不會對子查詢進行排序。這可能嗎?如果是這樣,我該如何實現它?查詢和子查詢中的後續順序

這裏是我完整的查詢:

models.Blog.findAll({ 
      order: 'blog_date DESC', 
      limit: 10, 
      include: [ 
      { 
       model: models.Topic, 
       attributes: ['topicName'], 
       required: false 
      }, 
      { 
       model: models.BlogComment, 
       include: [{ 
        model: models.User, 
        attributes: ['userId','firstName', 'lastName'] 
       }], 
       required: false 
      }] 
     }) 

生成一個查詢:

SELECT ... 
FROM (SELECT ... FROM blog LIMIT 10) 
LEFT OUTER JOIN topic ... 
LEFT OUTER JOIN blog_comment ... 
ORDER BY blog.blog_date DESC; 

我期待包括以下ORDER BY

FROM (SELECT ... FROM blog ORDER BY blog.blog_date LIMIT 10) 

回答

1

您可以使用sorder子查詢相同的方法,添加順序屬性

models.Blog.findAll({ 
      order: 'blog_date DESC', 
      limit: 10, 
      include: [ 
      { 
       model: models.Topic, 
       attributes: ['topicName'], 
       required: false 
      }, 
      { 
       model: models.BlogComment, 
       include: [{ 
        model: models.User, 
        attributes: ['userId','firstName', 'lastName'], 
        order : 'firstName DESC' 
       }], 
       required: false 
      }] 
     }) 

更新

你需要嘗試

order: [["blog_date","DESC"]] 

而不是

order: 'blog_date DESC' 

請參閱fo llowing鏈接

Sequelize js - limit and Sorting bug

+0

Keval Gohil感謝您的回答,但在此聲明的子查詢實際上是博客表本身,而我要訂購的屬性是在父查詢和子查詢一樣, 'blog_date'。更新我的問題以反映我的意思。 – cphill

+0

還有一個bug在續集中我會更新鏈接以解決awnser –

+0

錯誤討論https://github.com/sequelize/sequelize/issues/2004 –