[英]MySQL use leftjoin with select
i have two tables:我有两个表:
1. movie
id, userid, movie_id, status, score
2. movie_data
id, name_de, name_en, description, url
When i use this query:当我使用此查询时:
SELECT *
FROM `movie` LEFT JOIN
movie_data ON movie.movie_id = movie_data.id
ORDER BY movie.id
When i enter this query, i get all fields, but also two times id.当我输入这个查询时,我得到了所有字段,但也得到了两倍的 id。 But i don't manage to show only the first "id" or rename the second id.
但我没有设法只显示第一个“id”或重命名第二个 id。 i hope someone can help me :) Thanks for reading
我希望有人可以帮助我 :) 感谢阅读
You need to enumerate the columns in the SELECT
clause and use aliases to disambiguate homonym columns:您需要枚举
SELECT
子句中的列并使用别名来消除同音列的歧义:
SELECT
m.id,
m.user_id,
m.movie_id,
m.status,
m.score,
d.id data_id, --> column alias
d.name_de,
d.name_en,
d.description,
d.url
FROM movie m
LEFT JOIN movie_data d ON m.movie_id = d.id
ORDER BY m.id
Explicitly list the columns you want.明确列出您想要的列。 Don't use
select *
:不要使用
select *
:
SELECT m.id, m.userid, m.movie_id, m.status, m.score,
md.name_de, md.name_en, md.description, md.url
FROM `movie` m LEFT JOIN
movie_data md
ON m.movie_id = md.id
ORDER BY m.id
You can also do, for example你也可以做,例如
SELECT
`movie`.*, -- select all fields from one table
movie_data.id as movieId -- and some fields of another table
FROM `movie` LEFT JOIN
movie_data ON movie.movie_id = movie_data.id
ORDER BY movie.id
The query should be next:查询应该是下一个:
SELECT
`movie`.`id`,
`movie`.`userid`,
`movie`.`movie_id`,
`movie`.`status`,
`movie`.`score`,
`movie_data`.`name_de`,
`movie_data`.`name_en`,
`movie_data`.`description`,
`movie_data`.`url`
FROM `movie`
LEFT JOIN `movie_data` ON `movie`.`movie_id` = `movie_data`.`id`
ORDER BY `movie`.`id`;
This way you can exactly select what you need这样你就可以准确地选择你需要的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.