【问题标题】:SQL query to get an id获取 id 的 SQL 查询
【发布时间】:2017-08-24 05:30:14
【问题描述】:

我有一个表格国家,用以下格式表示

id name
1   at
2   be
3   ch
...

我正在尝试执行一个查询,通过在名称列上使用 WHERE 子句,我可以获得所有 id 值的列表

var countryIDQuery = "SELECT `id` FROM `country` WHERE `name` = ?";

connection.query(countryIDQuery, countriesObj , function (err, result) {
    if(err){
        console.error("Country Table Error:", err.stack);
    }
    console.log(result);

});

countriesObj 代表所有国家的数组,但我看到的唯一结果是 id = 1 的第一行

【问题讨论】:

  • 查询的结果到底应该是什么样子?如果您是 country 表中的所有 id 值,则不需要 WHERE 子句。
  • 您有问题吗?

标签: mysql node.js


【解决方案1】:

我想你想使用 IN

SELECT `id` FROM `country` WHERE `name` IN (?)

如果你的 connection 对象不支持数组,那么

var queryList = [];
for (var country in countriesObj) {
    queryList.push("?");
}
var countryIDQuery = "SELECT `id` FROM `country` WHERE `name` IN ("+queryList.join(",")+")";

connection.query(countryIDQuery, countriesObj , function (err, result) {
    if(err){
        console.error("Country Table Error:", err.stack);
    }
    console.log(result);

});

或者,如果它确实支持数组,那么

var countryIDQuery = "SELECT `id` FROM `country` WHERE `name` IN (?)";

connection.query(countryIDQuery, [countriesObj] , function (err, result) {
    if(err){
        console.error("Country Table Error:", err.stack);
    }
    console.log(result);

});

【讨论】:

  • 会是(SELECT id FROM country WHERE name IN (?), countriesObj, function(){})。这似乎返回了一个未定义的结果
  • 不确定您的“连接”对象是什么,但如果您的第二个参数不支持数组,您可以使用循环附加“?”并直接使用 countriesObj 数组。我会为你更新答案。
猜你喜欢
  • 2021-08-01
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
相关资源
最近更新 更多