mysql - 错误:AND 的参数必须是布尔类型,而不是文本类型
问题描述
我对下面的查询感到困惑,请问有什么问题?
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
我收到这种类型的错误:
错误:AND 的参数必须是布尔类型,而不是文本类型
解决方案
如果您想要一个新列,则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 ;
推荐阅读
- javascript - 我如何编辑这个以展开 onmouseenter 和折叠 onmouseleave
- c++ - 使用 Caffe 和 CUDA 的 C++ 程序
- barcode-scanner - 如何在 Zebra TC51 中禁用按键输出
- java - JEXL 在哪里存储本地变量以及通过什么机制分配本地变量?
- wordpress - 在弹出窗口中显示 WooCommerce 通知
- java - 尝试使用 Android 应用程序的 Java 代码在 Android 上运行 NMAP 进程时权限被拒绝
- javascript - 为什么 Node REPL 对表达式的评估取决于它是否分配给变量?
- c# - 路由属性不适用于 Web Api 中的 HttpPost(未找到 404)
- python - 通过python传输加密文件:InvalidToken错误
- python - Python Tkinter 类中的线程方法