SQL - 使用WHERE IN子句选择多个列

Geo*_*lov 1 mysql sql sql-server

所以我试图使用WHERE IN子句,我使用多列而不是单列.

这是我尝试但我一直收到错误:

"error near "," ... "
Run Code Online (Sandbox Code Playgroud)

声明:

SELECT 
    *
FROM
    language
WHERE
    (char1 , char2, char3, char4) in (('H' , 'H', 'B', 'B') , ('B' , 'B', 'B', 'M'))
        AND language.type = 'M'
Run Code Online (Sandbox Code Playgroud)

我不确定这里的错误是什么.我想知道是否有人尝试过类似的东西.这似乎是一个简单的查询.谢谢.

Rap*_*aus 7

你不能用IN子句做到这一点(至少不是这样).

一种方法是使用或条款

((char1 = 'H' and char2 = 'H' and char3 = 'B' and char4 = 'B') or
(char1 = 'B' and char2 = 'B' and char3 = 'B' and char4 = 'M'))

and language.type = 'M'
Run Code Online (Sandbox Code Playgroud)

如果你真的想使用IN子句,你可以使用连接

像这样的东西(只适用于这个样本,所以你可能需要通过在字段和搜索值之间添加一个分隔符来适应)

where
 concat(char1, char2, char3, char4) IN ('HHBB', 'BBBM')
Run Code Online (Sandbox Code Playgroud)