sql - 将多行子查询合并到相关的 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 BY
or对所有给定实例进行分组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;
推荐阅读
- wpf - 以正确的日期格式输入文本时的 WPF DatePicker 验证
- rest-assured - 放心,prettyprint 会在输出中添加小数
- javascript - Fabric.JS 和 Fabric-Brush - 无法添加到下部画布
- docker - 如何解决 Dockerized 反向代理后面的 LetsEncrypt/Certbot 404?
- php - 为什么标头重定向在php中不起作用
- ios - 在 iOS 上,两个 UIDragItem.itemProvider.loadObject 方法会有竞争条件吗?
- c# - dt.Alamat 错误 CS0103:名称“dt”在当前上下文中不存在
- sql - Impala - impala 是否允许在一个查询中使用多个 GROUP_CONCAT
- javascript - 使按钮变大并将按钮恢复为原始大小 Javascript
- reactjs - setState 在反应函数中不能与 forloop 一起使用