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 语句吗?

4

2 回答 2

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演示

于 2013-08-21T04:45:50.873 回答
0

您可以说 Select * from T WHERE Val=400 或 Val=200 等。然后将结果映射到数组。做地图的是真的,不做的是假的。

于 2013-08-21T04:41:10.987 回答