mysql - 错误 : argument of AND must be type boolean, 未输入文本

标签 mysql sql

我对下面的查询感到困惑,请问它出了什么问题?

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/

相关文章:

php - 如何在 PHP 中将时间字符串转换为 sql 时间戳

sql - Hibernate Envers SQL 审计

mysql - 每个索引多列还是一列?

php - 从php mysql数据库填充一个选择框

Mysql错误: 1222 when I am creating a new table from two existing tables

mysql - MySQL 中莫名其妙的缓慢查询

sql - 如何在 SQL 中排序,忽略文章 ('the"、 "a'、 "an"等)

sql - 从日期时间表中获取包含开始和结束值的列表

c# - 从 MYSQL 填充的 ASP.NET DropdownList 始终返回第一个值

php - SELECT MYSQL 记录包含 2 个可能值