![](/img/trans.png)
[英]How to select the column has value other than the header in google sheets?
[英]Sequelize Select column WHERE other column has not contain value
我有以下Accounts_Users table
:
account_id | user_id
--------------------
1 | 60
2 | 60
1 | 50
3 | 50
我想檢索所有沒有具有特定 account_id 行的 user_id 例如,如果 account_id = 2 我想要的結果應該是:
user_id
-------
50
由於 user_id = 60 有 account = 2 的記錄。
我當前的查詢如下所示:
let existingUserIdsWithAccountUser = await AccountUserModel.findAll({
raw: true,
where: {
account_id: account_id,
user_id: {
[Sequelize.Op.in]: existingUsersIds
}
},
attributes: [Sequelize.fn('DISTINCT', Sequelize.col('user_id')), 'user_id']
}).map(user => user.user_id);
const existingUserIdsWithoutAccountUser = existingUsersIds.filter(user_id => !existingUserIdsWithAccountUser.includes(user_id));
我想做一個查詢而不必過濾結果。
我也厭倦了以下內容:
let existingUserIdsWithoutAccountUser = await AccountUserModel.findAll({
raw: true,
where: {
account_id: {
[Sequelize.Op.not]: account_id
},
user_id: {
[Sequelize.Op.in]: existingUsersIds
}
},
attributes: [Sequelize.fn('DISTINCT', Sequelize.col('user_id')), 'user_id']
}).map(user => user.user_id);
但在這種情況下,如果我有一個不同 account_id 的記錄,那么它仍然會明顯返回。
我終於能夠使用以下查詢來做到這一點:
const existingUserIdsWithoutAccountUser = await AccountUserModel.findAll({
raw: true,
where: {
user_id: {
[Sequelize.Op.and]: {
[Sequelize.Op.notIn]: Sequelize.literal(`(SELECT user_id FROM \`Accounts_Users\` WHERE account_id = ${account_id})`),
[Sequelize.Op.in]: existingUsersIds
}
}
},
attributes: [Sequelize.fn('DISTINCT', Sequelize.col('user_id')), 'user_id']
}).map(user => user.user_id);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.