Mysql 如何在同一明细表上重复使用内部联接

Mysql 如何在同一明细表上重复使用内部联接,mysql,Mysql,我试图使用两次内部连接语句来获取同一个细节表中的引用值 Master table: bags_tbl ID ... bagA bagB 1 ... 121 122 2 ... 123 124 3 ... 125 126 Detail table: fruit_tbl ID ... fruit ... 121 strawbery 122 apple

我试图使用两次内部连接语句来获取同一个细节表中的引用值

Master table: bags_tbl
ID ...     bagA        bagB 
1  ...     121         122 
2  ...     123         124 
3  ...     125         126

Detail table: fruit_tbl
ID ...     fruit  ... 
121        strawbery 
122        apple
123        orange 
124        raspberry
125        pear 
126        pineapple


SELECT
bags_tbl.ID,
bags_tbl.A,
bags_tbl.B,
fruit_tbl.fruit AS bagA_fruit,
fruit_tbl.fruit AS bagB_fruit
FROM
bags_tbl
Inner Join fruit_tbl ON bags_tbl.bagA = fruit_tbl.fruit
Inner Join fruit_tbl ON bags_tbl.bagB = fruit_tbl.fruit
此抛出错误:没有唯一的表/别名。。。 如何使用SQL语句获取主表的文本表示


非常感谢

试试这个。您需要为每个联接授予唯一的别名,以便SQL知道您在SELECT子句中引用的是哪个联接

SELECT
    bags_tbl.ID,
    bags_tbl.A,
    bags_tbl.B,
    A.fruit AS bagA_fruit,
    B.fruit AS bagB_fruit
FROM bags_tbl
Inner Join fruit_tbl A ON bags_tbl.bagA = A.id
Inner Join fruit_tbl B ON bags_tbl.bagB = B.id
SELECT
bags_tbl.ID,
bags_tbl.A,
bags_tbl.B,
fruitA.fruit AS bagA_fruit,
fruitB.fruit AS bagB_fruit
FROM
bags_tbl
JOIN fruit_tbl fruitA ON bags_tbl.bagA = fruitA.id
JOIN fruit_tbl fruitB ON bags_tbl.bagB = fruitB.id

试试这个。您需要为每个联接授予唯一的别名,以便SQL知道您在SELECT子句中引用的是哪个联接

SELECT
bags_tbl.ID,
bags_tbl.A,
bags_tbl.B,
fruitA.fruit AS bagA_fruit,
fruitB.fruit AS bagB_fruit
FROM
bags_tbl
JOIN fruit_tbl fruitA ON bags_tbl.bagA = fruitA.id
JOIN fruit_tbl fruitB ON bags_tbl.bagB = fruitB.id

正确的答案,但当使用别名> <代码>时,有点奇怪,当混淆列名时,在混淆表名时将其省略。但是,当使用别名> >代码>别名列名时,有点奇怪,但在混淆表名时将其省略。