Py学习  »  DATABASE

MySQL使用leftjoin和select

Cyberpunk7711 • 4 年前 • 815 次点击  

我有两张桌子:

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。我希望有人能帮助我:) 谢谢你的阅读

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52439
 
815 次点击  
文章 [ 4 ]  |  最新文章 4 年前
T.S.
Reply   •   1 楼
T.S.    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
Slava Rozhnev
Reply   •   2 楼
Slava Rozhnev    4 年前

查询应该是下一个:

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

这样你就能准确地选择你需要的

Gordon Linoff
Reply   •   3 楼
Gordon Linoff    4 年前

显式列出所需的列。不使用 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
GMB
Reply   •   4 楼
GMB    4 年前

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