MySQL两表连接查询问题:无法显示VENDOR.V_CODE求助
SQL查询无法显示VENDOR.V_CODE的原因及修复方案
问题出在哪
- 字段名写错了:你写的
SELECT VENDOR.VENDOR_CODE里的字段名不对,从JOIN条件VENDOR.V_CODE = PRODUCT.V_CODE能看出来,供应商表的编号字段实际是V_CODE,不是VENDOR_CODE,数据库找不到这个不存在的列,自然显示不出来。 - GROUP BY不符合规则:MySQL默认开启
ONLY_FULL_GROUP_BY模式,要求SELECT里的非聚合列必须都出现在GROUP BY里,或者是GROUP BY列的依赖字段(比如主键)。你只按V_NAME分组,但V_CODE既不在GROUP BY里,也没法通过V_NAME唯一确定,这会直接触发语法错误,查询根本跑不起来。 - 没加平均价格计算:原代码没实现任务要求的
AVG_PROD_PRICE(产品平均价格)统计。
修正后的代码
SELECT VENDOR.V_CODE, VENDOR.V_NAME, COUNT(DISTINCT PRODUCT.P_CODE) AS NUM_PRODS, AVG(PRODUCT.P_PRICE) AS AVG_PROD_PRICE FROM VENDOR JOIN PRODUCT ON VENDOR.V_CODE = PRODUCT.V_CODE GROUP BY VENDOR.V_CODE, VENDOR.V_NAME;
简单说明
- 把
VENDOR.VENDOR_CODE改成VENDOR.V_CODE,对应表中实际存在的字段。 - GROUP BY同时包含
V_CODE和V_NAME,既符合MySQL的聚合规则,也避免了不同供应商同名导致的分组错误。 - 加了
AVG(PRODUCT.P_PRICE)来计算产品平均价格,满足任务要求。 - 用
COUNT(DISTINCT PRODUCT.P_CODE)确保统计的是不同产品的数量,避免重复计数(如果同一产品有多条记录的话)。
内容的提问来源于stack exchange,提问作者Brayden de Koning
相关产品推荐
相关产品推荐

