NodeJS mysql获取相关数据

时间:2017-07-19 07:10:30

标签: mysql node.js

在我的数据库中,我有两张桌子。我们称他们为ABB表具有与A表中的记录ID相关的外键。

我从A表中获取了几个id,我希望在B表中找到与这些ID匹配的外键的记录。但是,A表中的每个记录都没有B表中与其相关的记录。

所以在我的代码中它看起来像这样:

var idsFromA = [1, 2, 3, 4, 5]

connection.query("SELECT * FROM B_table WHERE a_id = ?", idsFromA, function(err, results) {
  if (err) {
    return console.log(err)
  } else {
    // always empty
    console.log(results);
  }
});

我们假设表1中的ID 2A在表B中有与它们相关的记录。其余的不是。我想从表B获取带有这些外键的记录,但我只收到一个空数组。仅当我只使用一个匹配值键入查询时,它才有效。但对于整个价值观,其中一些没有相关记录。

如何修复并获取有关这些记录的信息?

1 个答案:

答案 0 :(得分:1)

您必须使用=而不是IN,而需要将数组作为第一个占位符的值传递。

connection.query("SELECT * FROM B_table WHERE a_id IN (?)", [idsFromA], ...)

您编写它的方式只有数组idsFromA中的第一个ID才会用于?

您可能希望使用LEFT JOINnestTables选项,而不是使用两个查询。

connection.query({
  query: 'SELECT * FROM A_table LEFT JOIN B_table ON (A_table.id=B_table.a_id) WHERE ...some condition to filter A...',
  nestTables: true
}, function(err, results) {
  if (err) {
    console.log(err)
  } else {
    console.dir(results);
  }
});