You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL查询展示联系人及其所有电话号码(SQLite3/PG/MySQL)

关联联系人与电话号码的SQL查询方案

我来帮你搞定这个需求——把联系人表contacts和电话号码表phones关联起来,展示每位联系人的所有关联电话号码。下面针对你提到的SQLite3、PostgreSQL和MySQL分别给出适配的查询语句:

MySQL & SQLite3 适用语句

这两个数据库都支持GROUP_CONCAT函数来聚合多个电话号码:

SELECT 
    c.name AS Name,
    GROUP_CONCAT(p.phone_number SEPARATOR ', ') AS Phones
FROM contacts c
LEFT JOIN phones p ON c.id = p.contact_id
GROUP BY c.id, c.name;

PostgreSQL 适用语句

PostgreSQL使用STRING_AGG来实现字符串聚合:

SELECT 
    c.name AS Name,
    STRING_AGG(p.phone_number, ', ') AS Phones
FROM contacts c
LEFT JOIN phones p ON c.id = p.contact_id
GROUP BY c.id, c.name;

补充说明

  • 用LEFT JOIN是为了确保即使某个联系人没有电话号码,也会在结果里显示(此时Phones列会是NULL);如果确定所有联系人都有对应的电话,换成INNER JOIN也可以。
  • 聚合函数里的SEPARATOR ', '是用来指定电话号码之间的分隔符,你可以根据需求改成其他符号(比如换行符'\n')。

期望输出示例

NamePhones
Ashok(111) 123-1111, (111) 123-2222, (111) 123-3333, (111) 123-4444
Betty(222) 456-1111, (222) 456-2222
Charles(333) 789-1111, (333) 789-2222, (333) 789-3333

内容的提问来源于stack exchange,提问作者MERM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:36:27