我正在尝试进行IN查询,但我查询的字段不是表的元素 . 它是硬编码的 .
await models.users.findOne({
where: {
id: 12,
2: {$in: [1, 2, 3]}
}
});
问题是,sequelize将表名放在我的字段的开头 .
WHERE `users`.`2` IN (1, 2, 3)
因为我的表中没有字段 2 它会抛出"Unknown column 'users.2' in where clause"
实际上,这是我需要的,并在本机sql中工作:
WHERE 2 IN (1, 2, 3)
UPDATE
为了更好地解释它,我正在编写整个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));
在这种情况下,我收到“未知列1”错误
1 回答
你可以通过以下方式实现: