【发布时间】:2021-02-06 21:43:53
【问题描述】:
我想对我的选择子查询应用条件检查。我怎样才能做到最好?
这是最初的查询:
SELECT
table1.column1,
(SELECT min(table2.column1) FROM table2 WHERE table2.table1Id = table1.id) as subResult
FROM table1
WHERE table1.column2 = "something"
我想添加 WHERE 条件subResult = :parameter。而:parameter 是可选的,这意味着如果:parameter 为空,则在结果中包含行。
WHERE table1.column2 = "something" AND (:parameter is null or subResult = :parameter)
但我无法在 WHERE 条件中引用子查询 subResult 的结果。
我可以将子查询复制/粘贴到 WHERE 子句中,但这似乎草率且容易出错:
SELECT
table1.column1,
(SELECT min(table2.column1) FROM table2 WHERE table2.table1Id = table1.id) as subResult
FROM table1
WHERE table1.column2 = "something" AND (:parameter is null or (SELECT min(table2.column1) FROM table2 WHERE table2.table1Id = table1.id) = :parameter)
【问题讨论】:
-
问题是我不能在 where 子句中引用
subResult。 -
使用分析器应用程序将有助于告诉您执行时间;此处未指定正在使用的数据库。 (例如,对于 SQL Server、SQL Profiler)
标签: sql oracle subquery where-clause lateral-join