首页 > 解决方案 > 将多行子查询合并到相关的 SQL 查询中

问题描述

我有一个相关的 SQL 子查询,它返回多行。例如,

SELECT NAME AS NAME1,
(SELECT NAME FROM ...) AS NAME2 /*this inner select returns more than one rows*/ 
FROM PERSONAL_INFORMATION

是否可以将 NAME2 返回的行与主查询的其余部分合并NAME1,即此处。我在想的是一种如下所示的交叉产品,我可以使用GROUP BYor对所有给定实例进行分组DISTINCT

NAME1_1  NAME2_1
NAME1_1  NAME2_2
NAME1_2  NAME2_1
NAME1_2  NAME2_2

标签: sqljoincorrelated-subquery

解决方案


那就用CROSS JOIN吧。

SELECT I1.NAME AS NAME1, I2.NAME AS NAME2 
FROM PERSONAL_INFORMATION I1
CROSS JOIN PERSONAL_INFORMATION2 I2;

如果您需要更多详细信息,可以使用GROUP BY

SELECT I1.NAME AS NAME1, I2.NAME AS NAME2, 
       COUNT(1) cnt, SUM(COL2) sum_col1 ...
FROM PERSONAL_INFORMATION I1
CROSS JOIN PERSONAL_INFORMATION2 I2
GROUP BY I1.NAME, I2.NAME;

推荐阅读