MySQL IF结果计数0返回消息
我需要以下查询来返回一条消息,例如,如果记录计数为0,则返回“No Result”MySQL IF结果计数0返回消息,mysql,sql,select,Mysql,Sql,Select,我需要以下查询来返回一条消息,例如,如果记录计数为0,则返回“No Result” set @ID_CARTERA = 1; select LEFT(A.F_ANOTRIMESTRE, 4 ) Year, RIGHT(A.F_ANOTRIMESTRE, 2 ) Quarter, ROUND ( A.POR_RENTABILIDAD, 2 ) Quarterly_Yield from dr_rent_carteras_trimestres A where A.ID
set @ID_CARTERA = 1;
select
LEFT(A.F_ANOTRIMESTRE, 4 ) Year,
RIGHT(A.F_ANOTRIMESTRE, 2 ) Quarter,
ROUND ( A.POR_RENTABILIDAD, 2 ) Quarterly_Yield
from dr_rent_carteras_trimestres A
where A.ID_CARTERA = @ID_CARTERA
And (LEFT(A.F_ANOTRIMESTRE, 4 ) = ( select MAX(left(F_ANOTRIMESTRE, 4 ) ) - 0
from dr_rent_carteras_trimestres
where ID_CARTERA = @ID_CARTERA )
and
RIGHT(A.F_ANOTRIMESTRE, 2 ) = 12)
您可以像这样欺骗系统:
同样的事情也可以通过联合来完成。在评论中询问,如果您希望我显示如何以及当实际存在与搜索匹配的行时,预期的结果集是什么?这是一个非常奇怪的请求。这似乎是在试图要求数据库执行应用程序级逻辑。预期的结果集是一条记录。我可以看到这将如何工作。如果你现在能让我看到用工会来实现同样的目标,那就太好了。
set @ID_CARTERA = 1;
select
CASE cnt WHEN 0 THEN "No Results" ELSE Year END,
Quarter,
Quarterly_Yield
FROM
(select count(*) AS cnt
from dr_rent_carteras_trimestres A
where A.ID_CARTERA = @ID_CARTERA
And (LEFT(A.F_ANOTRIMESTRE, 4 ) = ( select MAX(left(F_ANOTRIMESTRE, 4 ) ) - 0
from dr_rent_carteras_trimestres
where ID_CARTERA = @ID_CARTERA )
and
RIGHT(A.F_ANOTRIMESTRE, 2 ) = 12) ) cnt_tbl
LEFT JOIN
( select
LEFT(A.F_ANOTRIMESTRE, 4 ) Year,
RIGHT(A.F_ANOTRIMESTRE, 2 ) Quarter,
ROUND ( A.POR_RENTABILIDAD, 2 ) Quarterly_Yield
from dr_rent_carteras_trimestres A
where A.ID_CARTERA = @ID_CARTERA
And (LEFT(A.F_ANOTRIMESTRE, 4 ) = ( select MAX(left(F_ANOTRIMESTRE, 4 ) ) - 0
from dr_rent_carteras_trimestres
where ID_CARTERA = @ID_CARTERA )
and
RIGHT(A.F_ANOTRIMESTRE, 2 ) = 12) ) main_tbl