合并多行子查询和相关 SQL 查询
Merge multiple row subquery into corelated SQL query
我有一个相关的 SQL 子查询,其中 returns 多行。例如,
SELECT NAME AS NAME1,
(SELECT NAME FROM ...) AS NAME2 /*this inner select returns more than one rows*/
FROM PERSONAL_INFORMATION
是否可以将 NAME2 返回的行与主查询的其余部分合并,这里是 NAME1
。
我在想的是下面显示的一种叉积,我可以使用 GROUP BY
或 DISTINCT
?
对所有给定实例进行分组
NAME1_1 NAME2_1
NAME1_1 NAME2_2
NAME1_2 NAME2_1
NAME1_2 NAME2_2
那就用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;
我有一个相关的 SQL 子查询,其中 returns 多行。例如,
SELECT NAME AS NAME1,
(SELECT NAME FROM ...) AS NAME2 /*this inner select returns more than one rows*/
FROM PERSONAL_INFORMATION
是否可以将 NAME2 返回的行与主查询的其余部分合并,这里是 NAME1
。
我在想的是下面显示的一种叉积,我可以使用 GROUP BY
或 DISTINCT
?
NAME1_1 NAME2_1
NAME1_1 NAME2_2
NAME1_2 NAME2_1
NAME1_2 NAME2_2
那就用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;