【发布时间】:2020-12-19 07:39:23
【问题描述】:
我有一个存储过程,它连接许多不同的表并返回 1 行。我不太确定这个过程的工作原理,但我认为这在这里不太重要。
我遇到的问题是,根据许多不同的事情,这个过程有时可能会返回一个空行(没有结果),如果发生这种情况,我们可以简单地在过程中进行一些更改强迫它指向另一张桌子,一切都很好。问题是我想自动执行此操作,虽然我知道可以在应用程序端执行此操作(通过有两个单独的存储过程并调用一个,如果没有结果,则调用另一个)但我会宁可避免这种情况,所以:
是否可以在 MySQL 中调用一个 SELECT 语句并根据结果返回该结果或调用稍微不同的 SELECT 语句,理想情况下是在一个存储过程中?
类似
IF (SELECT something FROM somewhere) = '1 row'
THEN
# 1 row returned so all good.
SELECT something FROM somewhere
ELSE
# 0 rows returned so do this one instead.
SELECT somethingElse FROM somewhereElse
提前谢谢...
【问题讨论】:
-
.见 COALESCE()
-
显示你的存储过程
-
@Strawberry 我曾考虑过这一点,但这不是只需要 SELECT 语句返回 1 列吗?因此,例如,以下内容将不起作用;选择合并((选择 * FROM
faultsWHEREfault_id= 2),(选择 * FROMfaultsWHEREfault_id= 131));因为每个 SELECT 语句返回多于一列。在我上面编写的示例中,fault_id 2 不存在。 -
我有一个存储过程,它连接许多不同的表并返回 1 行。 这是否意味着“1 行或 0 行”或“1 行或非 1 (0, 2, 3, ...) 行”?如果首先 - 您的 SP 输出查询是否包含明确的
LIMIT 1?
标签: mysql sql stored-procedures count where-clause