这是引起问题的查询:
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
中的所有字段都将被省略。一定是id
的seedrecord
列与hardinessZone
和members
的id列发生了某种冲突,但我没有试图将这2个表的id字段包含到我要创建的临时表中所以这个错误真的让我感到困惑。
谁能告诉我我该怎么做才能阻止此错误的发生?
谢谢
不要做
select *
将使用您的“从子句”中包含的所有克隆体
并且您至少有两个名为id的列
改为使用
S.*,u.*
依此类推