3

私は次のMySQLを持っています:

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

どういうわけか私は得ています

where句の列'ID'があいまいです

複雑なコード上の理由から、エイリアスの名前を別の名前(ID2など)に変更してい
ません。これは機能しませんか?

4

3 に答える 3

8

idwhere句で使用しているテーブルを指定する必要があります。そうしないと、2つのテーブルに同じ列名があるため、クエリはどちらを使用するかわかりません。

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

または、bigcarIDが必要な場合は、以下を使用する必要があります。

WHERE `bigcar`.`ID` ='1'; // not truck but bigcar which is the alias you created
于 2011-11-25T14:31:05.820 に答える
3

どうですか:

select  `car`.`ID` AS `ID`, 
    `title`,`text` 
    from `car`  
    LEFT JOIN `truck` as bigcar ON bigcar.`ID` = `car`.`truckID`  
    WHERE `car`.`ID` ='1'; 
于 2011-11-25T14:31:12.103 に答える
0

エラーは、フィールドIDが両方のテーブルに存在することを意味します。これを修正するには、WHERE句にテーブルエイリアスを追加する必要があります。たとえば、-bigcar.ID=1またはcar.ID=1...必要に応じて。

于 2011-11-25T14:34:28.553 に答える