[英]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.