簡體   English   中英

SQL-使用WHERE IN子句選擇多個列

[英]SQL - Select multiple columns with WHERE IN clause

因此,我嘗試使用WHERE IN子句,在其中使用多列而不是單列。

這是我嘗試過的方法,但始終出現錯誤:

"error near "," ... "

聲明:

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

我不確定這里的錯誤是什么。 我想知道是否有人嘗試過類似的方法。 似乎是一個瑣碎的查詢。 謝謝。

您不能使用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'

如果您確實想使用IN子句,則可以使用串聯

這樣的事情(僅適用於此示例,因此您可能需要在字段和搜索值之間添加分隔符來進行調整)

where
 concat(char1, char2, char3, char4) IN ('HHBB', 'BBBM')

這是無效的語法。 你想做什么? 看看這些四列中的每一個都與括號中的值完全匹配嗎?

如果是這樣,則需要這樣指定:

WHERE language.type = 'M' AND
 ((char1 = 'H' AND char2 = 'H' AND char3 = 'B' AND char4 = 'B') OR
 (char1 = 'B' AND char2 = 'B' AND char3 = 'B' AND char4 = 'M'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM