2016-01-13 33 views
0

我有一段这样的代码:如果选择存在,请使用它。如果没有,尝试在不同的表

IF EXISTS(SELECT VALUE 
       FROM tableA 
       WHERE nameid = 'thisName') 
BEGIN 
    SELECT distinct VALUE 
    FROM tableA 
    WHERE nameid = 'thisName' 
    ORDER BY value 
END 

ELSE BEGIN  
    SELECT distinct VALUE 
    FROM tableB 
    WHERE nameid = 'thisName' 
    ORDER BY value 
END 

基本上从tableA选择的东西,如果我没有找到导致那里,尝试在tableB

有没有更有效的方法来写这个?因此,我不必从tableA中选择两次(一次在EXISTS声明中,一次作为实际选择)。

我正在玩COALESCE,但它只允许一个结果,而不是一组。

+1

如果这种说法是独立的,这是有效的,因为它得到。 –

回答

1

试试这个

SELECT distinct VALUE 
    FROM tableA 
    WHERE nameid = 'thisName' 
    ORDER BY value 
if(@@ROWCOUNT = 0) 
BEGIN 
    SELECT distinct VALUE 
    FROM tableB 
    WHERE nameid = 'thisName' 
    ORDER BY value 
END 
+0

这个问题在于,如果第一个选项为空,它将返回两个选择。因为我在存储过程中只有一个结果,所以会导致麻烦。 – Zikato

+0

欢迎您 – Paparazzi

+0

我不想忘恩负义,独立就没问题,但它不适用于我的存储过程。 – Zikato

相关问题