【发布时间】:2020-01-13 06:24:31
【问题描述】:
我有以下疑问:
SELECT prefix FROM username_prefix_pool LEFT JOIN user_creds ON user_creds.prefix_id = username_prefix_pool.id WHERE user_creds.id IN (?);
使用以下参数:
[ 96, 62, 95, 92, 91 ]
我已经通过 MySQL 工作台测试了这个查询,它确实返回了结果,其中有五个。
但是,在我的代码 (node.js) 中,它只返回列表中第一项的结果。
.then((mapListResults) => {
// ^^ results from another query
mapList = mapListResults; // <--- Stores the result
for (let i = 0; i < mapList.length; i++) {
authorIds.push(mapList[i].author_id.toString());
}
console.log('Author IDs');
console.log(authorIds); // this is the [ 96, 62, 95, 92, 91 ]
let searchsql = `SELECT prefix FROM username_prefix_pool LEFT JOIN user_creds ON user_creds.prefix_id = username_prefix_pool.id WHERE user_creds.id IN (?)`;
return new Promise((resolve, reject) => {
connection.query(searchsql, authorIds, (err, rows) => {
if (err) {
console.log(err);
reject(err);
} else {
console.log(rows);
resolve(rows);
}
});
});
})
我尝试将数组转换为字符串数组,但无济于事。我也试过删除 SQL 语句上的括号(导致查询错误,所以我把它放回去了)。
我有什么遗漏吗?
【问题讨论】:
-
这是因为你在 authorIds 中给出了一个列表。你应该给出一个包含所有元素的字符串
标签: javascript mysql