2017-06-28 90 views
0

嘿,我試圖找出一種方法來從下面的SQL查詢發送2結果表工作得很好。MS SQL選擇的情況下查詢真的還是假的,然後執行另一個SELECT查詢

SELECT 
    CASE WHEN EXISTS 
    (
     SELECT * FROM usersTbl WHERE name = 'Bob Barker' 
) 
    THEN 'TRUE' 
     (SELECT name FROM usersTbl WHERE name = 'Bob Barker' 
           AND active = 1) AS result2 
    ELSE 'FALSE' 
END AS result1 

|result1 | 
|---------| 
| TRUE | 

|result2  | 
|--------------| 
| Bob Barker | 

因此而不是隻RESULT1返回,這將讓雙方RESULT1和RESULT2是:如果「TRUE」這樣然而,我也需要到執行另一個select語句回。

我該如何去格式化查詢呢?

+0

這沒有什麼意義提及。如何編輯樣本數據和預期輸出? – JohnHC

+0

好的,我更新了OP – StealthRT

回答

0

您查詢看起來有點不對勁......它應該是一個奇怪的一個

SELECT *, 
    CASE WHEN name = 'Bob Barker' THEN 'TRUE' ELSE 'FALSE' END AS result1 
FROM usersTbl 
WHERE name = 'Bob Barker' 
AND active = 1 
0

類,但如果你想2個的結果集,你可以使用IF EXISTS()

IF EXISTS (SELECT * FROM usersTbl WHERE name = 'Bob Barker') 
BEGIN 
    SELECT 'TRUE' as Result1; 
    SELECT CASE WHEN EXISTS (SELECT * 
          FROM usersTbl 
          WHERE name = 'Bob Barker' 
          AND active = 1) 
       THEN (SELECT name 
         FROM usersTbl 
         WHERE name = 'Bob Barker' 
         AND active = 1) 
       ELSE 'FALSE' 
       END as Result2; 
END 

如果如果第一個結果不存在,則要返回FALSE,則必須添加另一個IF

IF NOT EXISTS (SELECT * FROM usersTbl WHERE name = 'Bob Barker') 
BEGIN 
    SELECT 'FALSE'; 
END 

編輯:與最終FALSE全面查詢:

IF EXISTS (SELECT * FROM usersTbl WHERE name = 'Bob Barker') 
BEGIN 
    SELECT 'TRUE' as Result1; 
    SELECT CASE WHEN EXISTS (SELECT * 
          FROM usersTbl 
          WHERE name = 'Bob Barker' 
          AND active = 1) 
       THEN (SELECT name 
         FROM usersTbl 
         WHERE name = 'Bob Barker' 
         AND active = 1) 
       ELSE 'FALSE' 
       END as Result2; 
END 

IF NOT EXISTS (SELECT * FROM usersTbl WHERE name = 'Bob Barker') 
BEGIN 
    SELECT 'FALSE' as Result1; 
END 
+0

您可以繼續並結合原始示例中的FALSE嗎? – StealthRT

+0

@StealthRT完成。如果你運行整塊,它將返回2個結果集('TRUE,Bob Barker')或者一個結果集'FALSE'。如果在後一種情況下,你想要2'FALSE'結果集,只需複製'SELECT FALSE;' –

+0

它不會輸出。它只是說**命令已成功完成。** – StealthRT

0

這可能會爲你工作。

SELECT 
    * 
FROM subTable1 
WHERE 
    st.value = 'Value' 
    AND st.restrictiveValue = 'restrictiveValue' 
    AND (SELECT COUNT(*) AS resultCount FROM subTable1 st WHERE st.value = 'Value') != 0 

SELECT COUNT(*) AS resultCount FROM subTable1 st WHERE st.value = 'Value' 

如果你不希望它返回一個空表,你可能要考慮使用動態SQL作爲this question.