SQLite:选择引用相同外键的多行

时间:2018-08-22 12:50:30

标签: java sqlite

我是SQLite的初学者,我有两个简单的表,如下所示:

  1. contact,ID为 PK ,名称为 TEXT
  2. phoneNumber,其ID为 PK ,contactId为与contact.id 的FK,数字为 TEXT < / li>

简单地说,一个联系人可以有多个电话号码。通过将联系人的ID引用为外键,每个phoneNumber条目/行都有一个约束。

我希望选择所有联系人及其电话号码。所以我想,对于resultSet中的每一行,我都有

  1. 联系人的唯一ID
  2. 联系人姓名
  3. 联系人的电话号码数组

是否可以通过一个查询(也许与子查询一起使用)进行查询?否则,我必须做两个声明,一个要获取所有联系人,每个要一个获取各自的电话号码。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果您可以将所有联系人电话号码作为逗号分隔列表使用,那么这里是一个选择:

SELECT
    c.id,
    c.name,
    GROUP_CONCAT(p.number) AS numbers
FROM contact c
LEFT JOIN phoneNumber p
    ON c.id = p.contactId
GROUP BY
    c.id, c.name;