SQL IN运算符和关联值

时间:2018-06-15 23:32:52

标签: sql sql-server-2008

是否有方法使用IN运算符将值与IN语句中的每个值相关联?

例如:

 SELECT Foo FROM MyTable WHERE Item IN('XYZ' AS 'BOB', 'QRM' AS 'DAVID')

我想基本上将别名与返回的响应相关联。

回复示例:

BOB   | 23
DAVID | 3

3 个答案:

答案 0 :(得分:1)

不,您不会使用IN执行此操作。您可以使用VALUES()JOIN执行此操作:

SELECT v.othername, . . .
FROM MyTable t JOIN
     (VALUES ('XYZ', 'BOB'),
             ('QRM', 'DAVID')
     ) v(item, othername)
     ON t.item = v.item;

答案 1 :(得分:0)

不,IN绝对不会让你到达那里。也许你正在寻找CASE ... END?有了它,你可以"翻译"像这样的字符串:

SELECT CASE item
         WHEN 'XYZ'
           THEN 'BOB'
         WHEN 'QRM'
           THEN 'DAVID'
         ELSE
           item
       END item,
       value
       FROM foo;

db<>fiddle

答案 2 :(得分:0)

您无法在IN条款中添加别名......但我也不确定您为什么要这样做? 您可以添加&#39;别名&#39;但是在SELECT子句中。

我假设你的数据结构如下:

Item     |  Value
------------------
XYZ      |     23
QRM      |      3

所以你可以这样做:

SELECT
    CASE Item
        WHEN 'XYZ' THEN 'BOB'
        WHEN 'QRM' THEN 'DAVID'
        ELSE 'SOMEONE ELSE'
    END AS Name,
    Value
FROM MyTable
WHERE Item IN ('XYZ', 'QRM')