我有一个具有以下语法的表格:
| ID | institution_course1_id | institution_course2_id |
其中 application1_id 和 application2_id 引用同一个表。我需要获取两者的值(所以换句话说我想检索每个应用程序的名称)
我尝试加入表格,但结果中仍然只收到 1 个姓名。这是我使用的 SQL:
SELECT * FROM `client_applications`
LEFT JOIN `institution_courses` `name1`
ON `client_applications`.`institution_course1_id`=`name1`.`id`
LEFT JOIN `institution_courses` `name2`
ON `client_applications`.`institution_course2_id`=`name2`.`id`
WHERE `client_applications`.`client_id`=?
有没有办法让我在结果中返回 client_applications 中的所有行,然后根据上述内容添加 2 个单独的键作为“name1”和“name2”?
最佳答案
我猜测您的问题是应用程序读取结果。尝试为这两个名称输入不同的别名(“列名称”):
SELECT ca.*, name1.name as name1, name2.name as name2
FROM `client_applications` ca LEFT JOIN
`institution_courses` `name1`
ON ca.`institution_course1_id` = `name1`.`id` LEFT JOIN
`institution_courses` `name2`
ON ca.`institution_course2_id` = `name2`.`id`
WHERE ca.`client_id` = ?;
否则您的查询看起来不错(尽管我也为第一个表添加了别名)。
关于MySQL 要返回的重复名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26234456/