0
比方說,我有一個MySQL表是這樣的:如何使用node.js中的sequelize編寫mysql連接查詢?
我如何編寫使用sequelize以下MySQL查詢?
select mt.JobId
from MyTable as mt join MyTable as mt2 on mt2.JobId = mt.JobId
where mt.TaskSeq = 0 and mt.TaskState = 'Done' and mt2.TaskSeq = 1
and mt2.TaskState = 'New'
該查詢返回所有JobId
(胡)的taskA
爲Done
狀態和taskB
爲New
狀態。
在這種情況下,它返回qwert
和zxcv
。
在閱讀了類似的stackoverflow問題here。我有點困惑,因爲我只有一張桌子。我應該使用hasMany
和belongsTo
爲了創建一個join
查詢的續集?
以下是我的node.js腳本的一部分,用於創建該表
var MyTable = conn.define(
'MyTable',
{
JobId: {
type: Sequelize.STRING,
unique: true
},
TaskName: {
type: Sequelize.STRING
},
TaskSeq: {
type: Sequelize.INTEGER
},
TaskState: {
type: Sequelize.STRING
}
},
{
collate: 'utf8mb4_bin'
}
)
MyTable.sync()
module.exports = {
MyTable, conn
}
,這是我sequelize查詢,它未能歸還JobId
的I需要。
MyTable.belongsTo(MyTable, {foreignKey: 'id'})
MyTable.findAll({
attributes: ['JobId'],
where: {
TaskSeq: 0,
TaskState: 'DONE'
},
include: [{
model: MyTable,
attributes: ['JobId'],
where: {
JobId: sequelize.col('MyTable.JobId'),
TaskSeq: 1,
TaskState: 'NEW'
}
}]
}).then(result => {
console.log(result)
})
的'id'列由sequelize自動生成。 – Brian
我在本地運行了相同的代碼,我不認爲Sequelize支持表關聯返回到同一個表。 我不知道的ID PK列,但我的意思是試圖改變: 'MyTable.belongsTo(MyTable的,{FOREIGNKEY: '身份證'})'來: 'MyTable.belongsTo(MyTable的,{FOREIGNKEY :'JobId'})' 但是,我安裝的版本,也沒有工作。 我只是使用原始查詢,並得到你想要的確切結果。 http://docs.sequelizejs.com/manual/tutorial/raw-queries.html –