我有一个包含多个子查询的复杂SQL查询。 Query返回一个非常大的数据。这些表是动态的,每天都会更新。昨天,查询没有执行,因为其中一个子查询返回了多行。
子查询将是这样的。
Select Value1 from Table1 where Table1.ColumnName = 123456
Table1.ColumnName将动态获取,不会对任何内容进行硬编码。 Table1.ColumnName将从另一个完美运行的子查询中获取。
我的问题是,
答案 0 :(得分:1)
如何查找特定子查询中的哪个值返回两行。
您需要检查每个子查询是否返回值的单行或多行。您可以使用COUNT
功能验证 -
select column_name, count(*) from table_name
group by column_name
having count(*) > 1
以上是子查询,它检查按每个值分组的行数,如果任何值返回多行,则该值是罪魁祸首。
一旦你知道哪个子查询和相应的列是罪魁祸首,你就可以使用ROWNUM
或ANALYTIC
函数来限制行数。