如何在SQL中合并无关联的两个表并生成指定组合结果?
如何用SQL生成两张无关联表的全组合结果?
要实现你需要的销售人员和商品的全组合效果,核心是使用SQL的笛卡尔连接(CROSS JOIN)——它会自动将左表的每一条记录与右表的所有记录进行配对,正好满足无关联表的全组合需求。
假设你的两张表字段如下:
Dim People表(假设表名为dim_people):存储销售人员名字的字段为nameItems表(假设表名为items):存储商品编号的字段为item_id
对应的SQL语句如下:
SELECT CONCAT(p.name, '-', i.item_id) AS combined_result FROM dim_people p CROSS JOIN items i ORDER BY p.name, i.item_id;
补充说明:
- 字符串拼接函数因数据库不同略有差异:
- MySQL/MariaDB 使用
CONCAT()函数 - Oracle/PostgreSQL 可以直接用
||拼接:p.name || '-' || i.item_id - SQL Server 可用
+拼接(需确保字段为字符串类型,若为数字需用CAST转换):p.name + '-' + CAST(i.item_id AS VARCHAR)
- MySQL/MariaDB 使用
ORDER BY子句是为了让结果按照销售人员名字、商品编号排序,和你给出的示例顺序完全匹配。
执行这条语句后,就能得到你需要的12条组合记录,格式和示例完全一致。
内容的提问来源于stack exchange,提问作者Álvaro
相关产品推荐
相关产品推荐

