简体   繁体   English

MySQL 使用 leftjoin 和 select

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM