我正在尝试进行IN查询,但我查询的字段不是表的元素。它是硬编码的。
await models.users.findOne({
where: {
id: 12,
2: {$in: [1, 2, 3]}
}
});
问题是,sequelize将表名放在我的字段的开头。
WHERE `users`.`2` IN (1, 2, 3)
由于我的表格中没有字段 2 ,因此会抛出"未知列' users.2'在where子句"
实际上,这是我需要的,并且在本机sql中工作:
WHERE 2 IN (1, 2, 3)
更新
为了更好地解释我正在编写整个SQL:
SELECT count(`users`.`id`) AS `count`
FROM `users` AS `users`
INNER JOIN `payment_log` AS `succeed_payment`
ON `users`.`id` = `succeed_payment`.`user_id` AND `succeed_payment`.`state` = 'success'
LEFT OUTER JOIN `user_profile` AS `profile` ON `users`.`id` = `profile`.`user_id` AND `profile`.`state` = 'submitted'
WHERE
`users`.`country` = 'BLR'
AND (`users`.`kyc_state` IN ('prepared', 'applicant_created', 'consider') OR `users`.`kyc_state` IS NULL)
GROUP BY `users`.`id`
HAVING
1 IN ((SELECT tag_id
FROM user_tags UT
WHERE users.id = UT.user_id)) AND
2 IN ((SELECT tag_id
FROM user_tags UT
WHERE users.id = UT.user_id));
1和2来自URL查询。我正在检查客户是否有这些标签。
不幸的是,sequelize会向我的查询添加反引号并将其返回到:
HAVING
`1` IN ((SELECT tag_id
FROM user_tags UT
WHERE users.id = UT.user_id)) AND
`2` IN ((SELECT tag_id
FROM user_tags UT
WHERE users.id = UT.user_id));
在这种情况下,我收到了#34;未知的第1列和第34页;错误
答案 0 :(得分:1)
你可以通过以下方式实现这一目标:
where : {
'$2$' : {$in: [1, 2, 3]}
}