2017-08-27 132 views
-3

我有两个选择查询两个SQL查询语句,只选择一个

  • 如果查询1有一个结果,然后就返回结果
  • 如果查询1没有产生结果,那么执行查询2

这两个查询来自同一个表,但查询条件不能共存。

我该怎么做?

+0

请澄清你的问题 – Horaciux

+2

是在SELECT语句中一样吗? – Amit

+0

这并没有很大的意义,说这些接头不能共存。查询是否可以返回多行? –

回答

1

您可以尝试使用@@ ROWCOUNT ...

IF OBJECT_ID('tempdb..#TestData', 'U') IS NOT NULL 
DROP TABLE #TestData; 

CREATE TABLE #TestData (
    SomeNumber INT NOT NULL 
    ); 
INSERT #TestData (SomeNumber) VALUES (1), (2), (3), (4), (5); 

--===================================================== 

SELECT * FROM #TestData td WHERE td.SomeNumber = 22; 

IF @@ROWCOUNT = 0 
BEGIN 
    SELECT * FROM #TestData td WHERE td.SomeNumber <= 5; 
END; 
0

使用IF ELSE

IF ((SELECT COUNT(1) FROM table_name WHERE condition_1) = 0) 
    SELECT col_1, col_2, ... col_n FROM table_name WHERE condition_2 
ELSE 
    SELECT col_1, col_2, ... col_n FROM table_name WHERE condition_1 
0

这将检查是否有QUERY1结果和将其设置为可变的另一种方法。 IF ELSE然后将检查是否有对应QUERY1结果则QUERY1否则QUERY2

DECLARE @rec_cnt INT 

SET @rec_cnt = (SELECT 1 
        FROM table 
       WHERE condition1) 

IF @rec_cnt IS NOT NULL 
    (SELECT * 
     FROM table 
    WHERE condition1); 
ELSE 
    (SELECT * 
     FROM table 
    WHERE condition2); 
0
IF EXISTS (SELECT TOP 1 1 FROM table1 WHERE condition1) 
    SELECT col_1, col_2 FROM table1 WHERE condition1 
ELSE 
    SELECT col_1, col_2 FROM table1 WHERE condition2