如何用MySQL的SELECT语句扩展现有数据表?
可以通过简单SELECT语句实现该需求
要生成目标Table2,核心是让Table1的每一行分别与两组固定值((A,B)、(C,D))进行组合,以下是两种通用的实现方式:
方法1:使用交叉连接(CROSS JOIN)搭配VALUES子句
这是标准SQL的写法,通过构造包含两组固定值的临时数据集,与Table1做笛卡尔积,直接得到8行结果:
SELECT t1.Col1, t1.Col2, t1.Col3, vals.Col4, vals.Col5 FROM Table1 t1 CROSS JOIN ( VALUES ('A', 'B'), ('C', 'D') ) AS vals(Col4, Col5);
原理:CROSS JOIN会将Table1的4行数据与子查询中的2行数据逐一配对,最终得到4×2=8行,同时将固定值填充到新增的Col4和Col5列。
方法2:使用UNION ALL合并两次查询
如果你的数据库不支持VALUES子句(部分旧版本数据库),可以通过两次查询分别绑定不同的固定值,再用UNION ALL合并结果:
SELECT t1.Col1, t1.Col2, t1.Col3, 'A' AS Col4, 'B' AS Col5 FROM Table1 t1 UNION ALL SELECT t1.Col1, t1.Col2, t1.Col3, 'C' AS Col4, 'D' AS Col5 FROM Table1 t1;
原理:第一次查询给Table1所有行绑定(A,B),第二次绑定(C,D),两次结果合并后正好是8行目标数据。
两种方法都属于简单的SELECT语句范畴,不需要创建临时表或复杂逻辑即可完成需求。
内容的提问来源于stack exchange,提问作者newbie2024
相关产品推荐
相关产品推荐

