MySQL查询WHERE关键字问题求助:含错误SQL语句需排查
排查MySQL查询WHERE子句的错误
嘿,我一眼就找到问题啦!你的SQL语句末尾误用了WHEN关键字,这里应该用WHERE来做全局行过滤,这就是phpMyAdmin报错的根源。
问题分析
在MySQL语法里:
WHEN只能用在CASE表达式(比如你语句里判断客户状态的部分)或者JOIN ... ON的关联条件中;- 如果要过滤整个查询结果里的行,必须使用
WHERE子句。
你的语句最后想筛选出delete_status = 0的活跃客户,所以这里的WHEN完全不符合语法规范,换成WHERE就能解决问题。
修正后的完整查询语句
SELECT c.name as "Client Name", c.email as "Email", c.phone as "Phone", cnt.name as "Country", c.street as "Street", c.city_id as "City/Suburb", st.name as "State", c.zip_code as "Postcode", "" as "Total Paid", "" as "Total Owed", CASE WHEN c.delete_status = 1 THEN "Not Active" ELSE "Active" END as "Status" FROM customer c LEFT JOIN shipping_address s ON c.id = s.customer_id LEFT JOIN states st ON st.id = c.state_id LEFT JOIN countries cnt ON cnt.id = c.country_id WHERE c.delete_status = 0
内容的提问来源于stack exchange,提问作者DhavalThakor
相关产品推荐
相关产品推荐

