我对下面的查询感到困惑,请问它出了什么问题?
SELECT * FROM my_table
WHERE
col_A <> 'Hello'
AND col_B <> 'Holla'
AND col_B <> 'Bonjour'
AND (CASE WHEN col_c = 6 AND Language_col = 'Fr'THEN 'Français'
WHEN col_c = 9 AND Language_col = 'Fr'THEN 'Français'
WHEN col_c = 12 AND Language_col = 'Eng' THEN 'English'
WHEN col_c = 4 AND Language_col = 'US' THEN 'Engish'
ELSE Language END)
order by Date_col
我收到此类错误:
ERROR: argument of AND must be type boolean, not type text
最佳答案
如果您想要一个新列,则 case
表达式需要进入 select
,而不是 where
:
SELECT t.*,
(CASE WHEN col_c = 6 AND Language_col = 'Fr' THEN 'Français'
WHEN col_c = 9 AND Language_col = 'Fr' THEN 'Français'
WHEN col_c = 12 AND Language_col = 'Eng' THEN 'English'
WHEN col_c = 4 AND Language_col = 'US' THEN 'English'
ELSE Language
END)
FROM my_table t
WHERE col_A <> 'Hello' AND
col_B NOT IN ( 'Holla', 'Bonjour' )
ORDER BY Date_col ;
关于mysql - 错误 : argument of AND must be type boolean, 未输入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55492386/