使用两次内连接时提示未知列,但该列实际存在的SQL问题
问题分析与解决办法
嘿,我一眼就瞅到你SQL里的问题啦!执行时提示products.products_id是未知列,核心原因特别简单——你的查询语句里根本没引入products表,但你却在关联条件里用到了这个表的字段,数据库当然找不到它啦!
原SQL的问题点
你当前的SQL只关联了products_to_mz(还重复用了一次,起了别名ptm)和mz_categories这两个表,完全没把products表加入到查询的表集合里,数据库不知道products这个表的存在,自然识别不了它的字段。
修正后的SQL示例
我帮你调整了语句,加入products表,同时给所有表起了简洁的别名,还明确列出了你需要的字段(替换成你实际的列名即可):
SELECT ptm.product_id, ptm.product_type AS product_type_id, mc.category_name AS product_type_name -- 这里替换成mz_categories中对应类型名称的实际列名 FROM products_to_mz ptm JOIN mz_categories mc ON ptm.product_type = mc.id JOIN products p ON p.products_id = ptm.product_id -- 新增products表的关联 ORDER BY ptm.product_type;
额外小建议
- 尽量避免用
select *,明确写出需要的字段,既让SQL逻辑更清晰,也能减少不必要的数据传输 - 给表起别名(比如
ptm、mc、p)能有效避免表名重复的歧义,也让语句更简洁 - 确认
products.products_id和products_to_mz.product_id确实是正确的关联字段,符合你的表结构设计
内容的提问来源于stack exchange,提问作者Mitca Vicentiu
相关产品推荐
相关产品推荐

