gpt4 book ai didi

sql - 仅当第一部分不返回任何内容时才执行查询的第二部分

转载 作者:行者123 更新时间:2023-12-05 04:16:59 24 4
gpt4 key购买 nike

这是我的查询。

select * from jobs where status='BUILDING' and Type='SLA' UNION ALL 
select top 1 * from jobs where Scheduled_Time = (select min(Scheduled_Time) from Jobs
where status='IDLE' and type='SLA')

我是 MSSQL 的新手,想知道如何让这个查询工作,以便如果第一个查询(就在 UNION ALL 之前)不返回 null,那么第二个查询将不会运行?同样,只有当第一个查询返回 null 时,第二个查询才应该运行。 (显然,UNION ALL 不是答案,因为这包括两个结果,我只是用它作为填充物,它将被删除)。

最佳答案

IF EXISTS (select * from jobs where status='BUILDING' and Type='SLA')
BEGIN
select * from jobs where status='BUILDING' and Type='SLA' UNION ALL
select top 1 * from jobs where Scheduled_Time = (select min(Scheduled_Time) from Jobs
where status='IDLE' and type='SLA')
END

也许这个查询有性能问题,但这就像你说的那样有效。为避免性能不佳,您可以将查询更改为:

DECLARE @result1 TABLE (a INT, Type varchar, status varchar)

INSERT INTO @result1
select * from jobs where status='BUILDING' and Type='SLA'

IF EXISTS (select * from @result1)
BEGIN
select * from @result1 UNION ALL
select top 1 * from jobs where Scheduled_Time = (select min(Scheduled_Time) from Jobs
where status='IDLE' and type='SLA')
END

更新

这是您在评论中所说的正确查询:

IF EXISTS (select * from jobs where status='BUILDING' and Type='SLA')
BEGIN
select * from jobs where status='BUILDING' and Type='SLA'
END
ELSE
select top 1 * from jobs where Scheduled_Time = (select min(Scheduled_Time) from Jobs where status='IDLE' and type='SLA')

关于sql - 仅当第一部分不返回任何内容时才执行查询的第二部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25144147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com