Неоднозначная колонка в MySQL даже с Alias - PullRequest
3 голосов
/ 25 ноября 2011

У меня есть следующий MySQL:

select  `car`.`ID` AS `ID`,
    `title`,`text`
    from `car` 
    LEFT JOIN `truck` as bigcar ON bigcar.`ID` = `car`.`truckID` 
    WHERE `ID` ='1';

Почему-то я получаю

Столбец 'ID', где предложение неоднозначно

По сложным причинам кода я не переименовываю псевдоним как-то еще (например, ID2)
Разве это не должно работать?

Ответы [ 3 ]

8 голосов
/ 25 ноября 2011

Вам необходимо указать таблицу, которую вы используете для id в предложении where.В противном случае запрос не будет знать, какой из них использовать, поскольку у вас одно и то же имя столбца в двух таблицах

SELECT
 `car`.`ID` AS `ID`, `title`,`text`
FROM `car` 
LEFT JOIN `truck` as bigcar ON bigcar.`ID` = `car`.`truckID` 
WHERE `car`.`ID` ='1';

или, если вам нужен идентификатор bigcar, вам придется использовать:

WHERE `bigcar`.`ID` ='1'; // not truck but bigcar which is the alias you created
3 голосов
/ 25 ноября 2011

А как же:

select  `car`.`ID` AS `ID`, 
    `title`,`text` 
    from `car`  
    LEFT JOIN `truck` as bigcar ON bigcar.`ID` = `car`.`truckID`  
    WHERE `car`.`ID` ='1'; 
0 голосов
/ 25 ноября 2011

Ошибка означает, что поле ID существует в обеих таблицах.Чтобы исправить это, вы должны добавить псевдоним таблицы в предложение WHERE, например - bigcar.ID = 1 или car.ID = 1 ..., как вам нужно.

...