在一个答案中组合2个查询(相同表)

时间:2014-08-06 16:43:32

标签: sql sql-server join jdbc

我正在尝试将这两个查询的结果合并到同一个答案中。当我试图将它们组合起来时,If exists会给我带来问题。我该怎么做?

查询1

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

查询2

if exists (select * from jobs where status='BUILDING' and Type='SLA' and Machine_Name=
'SLA3')
BEGIN
   select * from jobs where status='BUILDING' and Type='SLA' and Machine_Name='SLA3'
END 
ELSE

这些查询不相关,我不希望它们相互依赖。我想知道是否有某种方法可以将它们连接起来类似于union语句,因此它只在一个结果中显示多个查询。

2 个答案:

答案 0 :(得分:1)

更改

的所有实例
and Machine_name = 'SLA1'  -- or 3

and machine_name in ('SLA1', 'SLA3')

答案 1 :(得分:0)

IF EXISTS 
    SELECT * 
    FROM jobs 
    WHERE status = 'BUILDING' AND Type = 'SLA' 
      AND (Machine_Name = 'SLA1' OR Machine_Name = 'SLA3')
BEGIN
    SELECT * 
    FROM jobs 
    WHERE status = 'BUILDING' AND Type = 'SLA' 
      AND (Machine_Name = 'SLA1' OR Machine_Name = 'SLA3')
END
ELSE
  SELECT TOP 1 * 
  FROM jobs 
  WHERE Scheduled_Time = 
  (
    SELECT MIN(Scheduled_Time) 
    FROM Jobs 
    WHERE status = 'IDLE' AND type = 'SLA' 
      AND (Machine_Name = 'SLA1'  OR Machine_Name = 'SLA3')
  )