创建视图遇MySQL错误码1052:字段'id'歧义的问题求助
解决MySQL视图创建时的字段歧义(错误码1052)问题
兄弟,我帮你揪出修改代码时犯的两个关键错误,咱们一步步来修正:
你的代码里的问题
- 别名写法错误:你写的
wms.id as wms.idWMS是不对的,字段别名不需要带原表名前缀,直接写成wms.id as idWMS就好——别名是给这个字段起的新名字,加表名前缀反而会让MySQL识别出错。 - JOIN条件误用别名:你在
ON子句里用了barcodeWMS这个别名,但这个别名是在SELECT语句里定义的,而MySQL执行顺序是先处理JOIN的关联条件,再处理SELECT里的字段别名,所以这里根本识别不了barcodeWMS,得用原表的字段wms.barcode。
正确的写法示例
根据你的表结构,两个表都有id、pcode、barcode这些重复字段,所以得给这些重复字段加别名避免歧义。如果你想保留原需求里的所有字段(类似原来的SELECT *),可以这么写:
CREATE VIEW checkd AS SELECT wms.id AS wms_id, wms.pcode AS wms_pcode, wms.barcode AS wms_barcode, outerb.id AS outerb_id, outerb.pcode AS outerb_pcode, outerb.brand, outerb.descr, outerb.size, outerb.barcode AS outerb_barcode, outerb.checkd FROM wms JOIN outerb ON wms.barcode = CONCAT('0', outerb.barcode);
如果只需要你修改后的那几个wms的字段,那修正后的代码是:
CREATE VIEW checkd AS SELECT wms.id AS idWMS, wms.pcode AS pcodeWMS, wms.barcode AS barcodeWMS FROM wms JOIN outerb ON wms.barcode = CONCAT('0', outerb.barcode);
简单说,核心就是:字段别名别加原表前缀,关联条件里只能用原表的字段名,不能用SELECT里定义的别名~
内容的提问来源于stack exchange,提问作者user11327799
相关产品推荐
相关产品推荐

