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

如何用单条SQL查询将多列电话号码插入专用表?

单条SQL实现多列电话号码迁移

可以通过单条SQL语句完成这个迁移操作,核心是利用UNION ALL将companies表中的多个电话号码列转换为行数据,再插入到phonenrs表中。

示例数据

companies表

idteltel2tel3tel4
13277237363632724522341
232783675626
332968381949

期望phonenrs表结果

idcompany_idphonenr
1132772373636
2132724522341
3232783675626
4332968381949

迁移SQL语句

假设phonenrs表的id是自增主键(主流数据库如MySQL、PostgreSQL、SQL Server均支持),可以使用以下语句:

INSERT INTO phonenrs (company_id, phonenr)
SELECT id, tel FROM companies WHERE tel IS NOT NULL AND tel != ''
UNION ALL
SELECT id, tel2 FROM companies WHERE tel2 IS NOT NULL AND tel2 != ''
UNION ALL
SELECT id, tel3 FROM companies WHERE tel3 IS NOT NULL AND tel3 != ''
UNION ALL
SELECT id, tel4 FROM companies WHERE tel4 IS NOT NULL AND tel4 != '';

关键说明

  • UNION ALL用于合并多组查询结果,不会自动去重(适合保留所有有效号码),性能比UNION更高;
  • 每个SELECT子句添加WHERE条件,过滤空值和空字符串,避免插入无效的空号码;
  • 如果phonenrs表的id不是自增字段,可结合数据库自带的序列函数(如PostgreSQL的nextval()、MySQL的UUID())手动生成唯一标识后插入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:03:35