📅  最后修改于: 2023-12-03 15:23:19.113000             🧑  作者: Mango
在 Sequelize 中,where 子句是用于筛选和过滤数据的重要部分。 WHERE 子句通常作为查询语句一部分,用于确定从数据库中检索哪些数据。
使用 Sequelize,您可以轻松地构建复杂的 WHERE 子句,包括逻辑运算符和比较运算符,以及嵌套 WHERE 子句和子查询。
在 Sequelize 中,创建简单的 WHERE 子句非常简单。以下是一个定义了 WHERE 子句的查询示例:
const users = await User.findAll({
where: {
age: 20
}
});
在上面的代码中,WHERE 子句指定只返回 age 等于 20 的用户。您可以将 WHERE 子句添加到 Sequelize 查询中的任何查询操作中。
当需要更复杂的 WHERE 子句时,可以使用 Sequelize 提供的操作符。
您可以使用比较操作符(如 >、<、<= 和 >=)来构建 WHERE 子句。例如,以下代码检索 age 大于或等于 20 的用户:
const users = await User.findAll({
where: {
age: {
[Op.gte]: 20
}
}
});
您还可以使用逻辑操作符(如 AND、OR 和 NOT)来组合 WHERE 子句。例如,以下代码检索 age 大于或等于 20 并且 country 等于 'US' 的用户:
const users = await User.findAll({
where: {
[Op.and]: [
{
age: {
[Op.gte]: 20
}
},
{
country: 'US'
}
]
}
});
LIKE 操作符用于将字符串与通配符匹配。例如,以下代码检索 username 包含 'john' 子字符串的用户:
const users = await User.findAll({
where: {
username: {
[Op.like]: '%john%'
}
}
});
IN 操作符可用于从一组匹配值中选择记录。例如,以下代码检索 country 等于 'US' 或 'Canada' 的用户:
const users = await User.findAll({
where: {
country: {
[Op.in]: ['US', 'Canada']
}
}
});
BETWEEN 操作符用于选择某个范围内的记录。例如,以下代码检索年龄在 20 到 30 之间的用户:
const users = await User.findAll({
where: {
age: {
[Op.between]: [20, 30]
}
}
});
您可以嵌套 WHERE 子句以构建更复杂的查询。例如,以下代码检索 age 大于等于 20 或 country 等于 'US' 或嵌套 WHERE 子句指定 username 包含 'john':
const users = await User.findAll({
where: {
[Op.or]: [
{
age: {
[Op.gte]: 20
}
},
{
country: 'US'
},
{
username: {
[Op.like]: '%john%'
}
}
]
}
});
使用 WHERE 子句可以轻松地从 Sequelize 查询中查找所需的记录。 Sequelize 提供了广泛的操作符和语法支持,以使 WHERE 子句的创建变得简单、快捷和有效。