MySQL两表INNER JOIN查询如何选取指定字段解决同名字段冲突
问题原因
你当前使用SELECT *查询存在两个核心问题:
- 两张表存在
added_on、modified_on、product_id三个同名字段,MySQL会默认保留后关联的product表的同名字段值,导致字段结果覆盖,无法拿到product_image表对应字段的正确值 - 不符合你的字段选取规则:你只需要
product表的3个指定字段,不需要product表的added_on、modified_on字段
调整后的查询语句
给表设置别名,明确指定要查询的字段即可:
SELECT pi.*, p.product_id, p.product_name, p.price FROM `product_image` pi INNER JOIN `product` p ON pi.product_id = p.product_id ORDER BY pi.`id` DESC
补充说明
如果你同时需要保留product表的added_on、modified_on字段用于对比,可以给重名字段设置别名区分:
SELECT pi.*, p.product_id, p.product_name, p.price, p.added_on AS product_added_on, p.modified_on AS product_modified_on FROM `product_image` pi INNER JOIN `product` p ON pi.product_id = p.product_id ORDER BY pi.`id` DESC
内容的提问来源于stack exchange,提问作者Alexandru
相关产品推荐
相关产品推荐

