如何将产品信息表所有行与客户ID表每行进行交叉连接?
问题描述
现有两个数据表:
- 仅含客户ID的表(假设表名为
customer_ids):
ID ___ 1122 2222 3333
- 产品信息表(假设表名为
product_info):
| State| User | Limit | CA | JM21 | 100 | OH | JD11 | 200 | WV | KM34 | 250
需求是将所有产品信息关联到每个客户ID,实现第二个表的所有数据与第一个表的每一行交叉连接,期望得到如下结果:
|ID |State | User | Limit 1122| CA | JM21 | 100 1122| OH | JD11 | 200 1122| WV | KM34 | 250 2222| CA | JM21 | 100 2222| OH | JD11 | 200 2222| WV | KM34 | 250
请问是否可以实现?
解答
完全可以实现,你需要的就是交叉连接(CROSS JOIN),它会返回两个表的笛卡尔积,也就是第一个表的每一行都和第二个表的所有行进行组合,正好匹配你的需求。
不同SQL方言有两种常见写法:
- 显式使用
CROSS JOIN关键字:
SELECT c.ID, p.State, p.User, p.Limit FROM customer_ids c CROSS JOIN product_info p;
- 隐式交叉连接(用逗号分隔两个表,省略
CROSS JOIN):
SELECT c.ID, p.State, p.User, p.Limit FROM customer_ids c, product_info p;
执行任意一条SQL语句,就能得到你期望的结果表,每个客户ID都会与所有产品信息完成关联组合。
内容的提问来源于stack exchange,提问作者James Knopp
相关产品推荐
相关产品推荐

