MySQL简单INNER JOIN查询报错:未知列'%all%'问题求助
MySQL LIKE 查询报错 #1054 的解决方案
嘿,我一眼就发现问题所在啦!你的报错原因其实特别简单——你把字符串匹配条件用反引号包裹了。
报错根源
在MySQL里,反引号 ` 是用来包裹标识符的(比如表名、列名这类数据库对象名称),而字符串常量必须用单引号 ' 来包裹。你写的 WHERE cat_p.type LIKE %all%`` 中,%all% 被反引号括起来后,数据库会把它当成一个列名去解析,自然就会抛出 #1054 - Unknown column '%all%' in 'where clause' 的错误。
修正后的SQL语句
只需要把 %all% 换成单引号包裹,就能正常运行了:
SELECT `cat`.`brand_name` FROM `ps_product_brand` AS `cat` INNER JOIN `ps_product_custom_statistics_weekly` AS `cat_p` ON `cat_p`.`id_product` = `cat`.`id_product` WHERE `cat_p`.`type` LIKE '%all%' AND `cat_p`.`rank` <= 16;
小提示
- 只有当你的列名/表名和MySQL关键字(比如
type、rank这类)重名时,才需要用反引号包裹标识符; - 所有字符串类型的查询条件,都要用单引号来包裹,避免被数据库误解析成标识符。
内容的提问来源于stack exchange,提问作者Ylama
相关产品推荐
相关产品推荐

