SQL Server如何实现两张表的交叉连接生成笛卡尔积结果?
实现两张表的全组合查询
需求说明
现有两张表:
- Table A:包含
ID和Item字段,数据为SB对应SanBay、VP对应VanPhong - Table B:包含
Ma和HangHoa字段,数据为1对应AAA、2对应BBB、3对应CCC、4对应DDD
需要查询得到Item与HangHoa的所有组合结果,格式如下:
Item HangHoa ------------ SanBay AAA SanBay BBB SanBay CCC SanBay DDD VanPhong AAA VanPhong BBB VanPhong CCC VanPhong DDD
解决方案
使用SQL的笛卡尔积查询即可实现两张表的全组合,以下两种写法效果一致:
写法1:显式CROSS JOIN
SELECT a.Item, b.HangHoa FROM TableA a CROSS JOIN TableB b;
写法2:隐式笛卡尔积
SELECT a.Item, b.HangHoa FROM TableA a, TableB b;
以上语句会将Table A中的每一条记录与Table B中的每一条记录进行配对,返回所有可能的组合,完全匹配你需要的结果格式。
内容的提问来源于stack exchange,提问作者nguyenhuy289
相关产品推荐
相关产品推荐

