【发布时间】:2020-08-07 09:00:42
【问题描述】:
这是导致问题的查询:
CREATE TEMPORARY TABLE fetchedCropVariety ENGINE = MEMORY
SELECT *
, hz.zoneName
, i.fullImageUrl
, i.previewImageUrl
, u.userName
FROM seedrecord s
LEFT
JOIN HardinessZone hz
ON hz.id = s.hardiness_zone_id
JOIN image i
ON s.id = i.seedrecord_id
JOIN members u
ON s.FK_USER = u.id
WHERE s.id = 1
AND s.deleted = FALSE;
当我执行这个查询时,它会抛出错误Error Code: 1060. Duplicate column name 'id'
seedrecord 表中没有名为 id 的重复列,因此这是由其他表中的一个或多个 id 列引起的,这些列仅用于连接它们以检索 zoneName 和 fullImageUrl。
当我从查询中删除 *, 时,查询会运行,但 seedrecord 中的所有字段都将被省略。它一定是来自seedrecord 的id 列与来自hardinessZone 和members 的id 列以某种方式发生冲突,但我不想将这两个表的id 字段包含到我要创建的临时表中所以这个错误真的让我很困惑。
谁能告诉我我能做些什么来阻止这个错误的发生?
谢谢
【问题讨论】:
-
永远不要使用
SELECT *
标签: mysql select left-join inner-join