【问题标题】:MySQL use leftjoin with selectMySQL 使用 leftjoin 和 select
【发布时间】:2020-04-23 13:05:23
【问题描述】:

我有两张桌子:

1. movie
id, userid, movie_id, status, score
2. movie_data
id, name_de, name_en, description, url

当我使用这个查询时:

SELECT * 
FROM `movie` LEFT JOIN 
      movie_data ON movie.movie_id = movie_data.id 
ORDER BY movie.id

当我输入这个查询时,我得到了所有字段,但也得到了两次 id。但我不能只显示第一个“id”或重命名第二个 id。我希望有一个人可以帮助我 :) 感谢阅读

【问题讨论】:

  • 你有idmovie_id...为什么不使用movie_id作为主键?

标签: mysql sql select left-join


【解决方案1】:

您需要枚举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

【讨论】:

    【解决方案2】:

    明确列出您想要的列。不要使用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
    

    【讨论】:

      【解决方案3】:

      查询应该是下一个:

      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`;
      

      这样你可以准确地选择你需要的东西

      【讨论】:

        【解决方案4】:

        你也可以这样做,例如

        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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-28
          • 1970-01-01
          • 2016-01-28
          • 1970-01-01
          相关资源
          最近更新 更多