如何将 SQL-query 转换为 Sequelize?

How can I convert SQL-query to Sequelize?

我有这个 SQL 查询:

SELECT * 
FROM chats 
JOIN (SELECT * 
      FROM messages 
      WHERE messages.id 
      IN (SELECT MAX(messages.id) 
         FROM messages 
         GROUP BY messages.chatId)) 
      AS lastMessage 
      ON chats.id = lastMessage.chatId
WHERE chatGroupId = 1
ORDER BY lastMessage.createdAt DESC

它 returns 给定聊天中的最后一条消息。

但是我完全不明白如何在Sequelize中执行这一刻IN (SELECT MAX(messages.id) FROM messages GROUP BY messages.chatId)) AS lastMessage ON chats.id = lastMessage.chatId...

您可以这样使用 Sequelize.literal

const message = await Chats.findAll({
  where: {
    chatGroupId: 1
  },
  include: [{
    model: Messages,
    required: true,
    where: Sequelize.where(
      Seqeulize.col('messages.id'),
      Op.in,
      Sequelize.literal('(SELECT MAX(m2.id) FROM messages as m2 WHERE m2.chatId = chat.id)')
    )
  }]
})