2013-08-21 82 views
0

可以說我有一個表:T返回列中是否存在值的數組?

Id Val 
========== 
1  100 
2  200 
3  300 

我要檢查,如果在陣列中,如(400,200,100,700,900)的每一個元素,存在於上表中,預期的結果是:

(0, 1, 1, 0, 0) or (false, true, true, false, false) 

任何想法如何寫入select語句?

回答

1

你可以做這樣的事情

SELECT CASE WHEN t.val IS NULL 
      THEN 0 ELSE 1 END value_exists 
    FROM 
(
    SELECT 400 val UNION ALL 
    SELECT 200 UNION ALL 
    SELECT 100 UNION ALL 
    SELECT 700 UNION ALL 
    SELECT 900 
) a LEFT JOIN Table1 t 
    ON a.val = t.val 

輸出:

 
| VALUE_EXISTS | 
---------------- 
|   0 | 
|   1 | 
|   1 | 
|   0 | 
|   0 | 

這裏是SQLFiddle演示

+0

謝謝。這對我來說很有用。 – user2006633

+0

@ user2006633非常歡迎:)如果是你正在尋找的請考慮** [接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-答案)**答案。 – peterm

0

你可以說選擇*從T WHERE Val = 400或Val = 200等,然後將結果映射到數組。那些映射的是真實的,而不是虛假的。

相關問題