Невозможно создать временную таблицу из запроса на выборку с несколькими объединениями. Бросает 'Дублирующее имя столбца' id ' - PullRequest
0 голосов
/ 24 апреля 2020

Это запрос, который вызывает проблему:

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, так что это вызванный одним или несколькими столбцами идентификаторов из других таблиц, которые используются только для объединения их, чтобы получить zoneName и fullImageUrl.

Когда я удаляю *, из запроса, запрос выполняется, но все поля из seedrecord опущены. Это должен быть столбец id из seedrecord, который каким-то образом конфликтует со столбцами id из hardinessZone и members, но я не пытаюсь включить поля id этих двух таблиц во временную таблицу, которую я хочу создать так что эта ошибка действительно озадачивает меня.

Может кто-нибудь сказать мне, что я могу сделать, чтобы предотвратить возникновение этой ошибки?

Спасибо

1 Ответ

0 голосов
/ 24 апреля 2020

не делайте

select *

Это займет все кломуны, которые есть в вашем предложении From

И у вас есть как минимум два столбца, которые являются namend id

Сделать вместо

S.*,u.*

и т. Д.

...