returns Oracle SQL 多行的子查询
The Subquery which returns multiple rows in Oracle SQL
我有一个包含多个子查询的复杂 SQL 查询。 Query returns 一个非常大的数据。表格是动态的,它们每天都会更新。昨天,查询没有执行,因为其中一个子查询返回了多行。
子查询应该是这样的。
Select Value1 from Table1 where Table1.ColumnName = 123456
Table1.ColumnName 将被动态获取,不会被硬编码。 Table1.ColumnName 将从另一个完美运行的子查询中获取。
我的问题是,
- 如何查找特定子查询中的哪个值返回了两行。
How to find which value in the particular subquery returned two rows.
您需要检查每个子查询是returns一个值的单行还是多行。您可以使用 COUNT
函数来验证 -
select column_name, count(*) from table_name
group by column_name
having count(*) > 1
以上是子查询,它检查按每个值分组的行数,如果任何值 returns 超过一行,则该值是罪魁祸首。
一旦你知道哪个子查询和相应的列是罪魁祸首,你就可以使用 ROWNUM
或 ANALYTIC
函数来限制行数。
我有一个包含多个子查询的复杂 SQL 查询。 Query returns 一个非常大的数据。表格是动态的,它们每天都会更新。昨天,查询没有执行,因为其中一个子查询返回了多行。
子查询应该是这样的。
Select Value1 from Table1 where Table1.ColumnName = 123456
Table1.ColumnName 将被动态获取,不会被硬编码。 Table1.ColumnName 将从另一个完美运行的子查询中获取。
我的问题是,
- 如何查找特定子查询中的哪个值返回了两行。
How to find which value in the particular subquery returned two rows.
您需要检查每个子查询是returns一个值的单行还是多行。您可以使用 COUNT
函数来验证 -
select column_name, count(*) from table_name
group by column_name
having count(*) > 1
以上是子查询,它检查按每个值分组的行数,如果任何值 returns 超过一行,则该值是罪魁祸首。
一旦你知道哪个子查询和相应的列是罪魁祸首,你就可以使用 ROWNUM
或 ANALYTIC
函数来限制行数。