s0c*_*kan 2 javascript mysql express
是否可以在 sql 查询中使用 javascript 数组?
我想在第二个查询中使用 StudentsId 作为参数。
db.query('SELECT users.* FROM users JOIN classes ON users.class_id=classes.id WHERE classes.id ="' + req.body.classSelect + '" ', function (err, rows) {
// Saves all my users id that i get from my first query
var studentsId = [];
for (var i = 0; i < rows.length; i++) {
studentsId.push(rows[i].id);
}
console.log(studentsId);
// in this query i want to use studentsId
db.query("SELECT users.id, users.first_name, users.last_name,attendances.type_id,attendances.attendance_timestamp FROM users JOIN attendances ON attendances.user_id = users.id WHERE attendance_timestamp BETWEEN '2016-01-01' AND '2016-12-31' AND user_id IN ('"+ studentsId +"') ", function (err, result) {
if (err) {
throw err;
}
console.log(result);
});
});
Run Code Online (Sandbox Code Playgroud)
小智 5
是的,但不完全按照你的方式去做。
我会改变
studentsId.push(rows[i].id);
Run Code Online (Sandbox Code Playgroud)
到
studentsId.push('"' + rows[i].id + '"');
Run Code Online (Sandbox Code Playgroud)
接下来,更改这一行
db.query("SELECT users.id, users.first_name, users.last_name,
attendances.type_id,attendances.attendance_timestamp FROM users
JOIN attendances ON attendances.user_id = users.id WHERE
attendance_timestamp BETWEEN '2016-01-01' AND '2016-12-31'
AND user_id IN ('"+ studentsId +"') ", function (err, result) {
Run Code Online (Sandbox Code Playgroud)
对此
db.query("SELECT users.id, users.first_name, users.last_name,
attendances.type_id, attendances.attendance_timestamp FROM users
JOIN attendances ON attendances.user_id = users.id WHERE
attendance_timestamp BETWEEN '2016-01-01' AND '2016-12-31'
AND user_id IN (' + studentsId.join(',') + ') ", function (err, result) {
Run Code Online (Sandbox Code Playgroud)
那么你的代码应该可以正常运行。
第一个更改将引号添加到 ID 中。如果您的 ID 是数字,这可能不是必需的。
第二个更改使用逗号将 ID 连接在一起,因此它们可以在 on 子句中使用。
归档时间: |
|
查看次数: |
13225 次 |
最近记录: |