连接两个或多个表

时间:2019-09-28 08:27:21

标签: sql

我已经写了一些代码将两个表合并在一起。显示的值为空。

+----------+--------------+-----------------------------------------------+-------------+----------+----------+------+----------+
| Movie_ID | Release_year | Movie_Title                                   | Duration    | Genre_ID | Actor_ID | Role | Movie_ID |
+----------+--------------+-----------------------------------------------+-------------+----------+----------+------+----------+
| 10001    | 1997         | Titantic                                      | 190 minutes | 40001    | NULL     | NULL | NULL     |
| 10002    | 1998         | Shakesphere in Love                           | 123 minutes | 40002    | NULL     | NULL | NULL     |
| 10003    | 1999         | American Beauty                               | 122 minutes | 40003    | NULL     | NULL | NULL     |
| 10004    | 2000         | Gladiator                                     | 155 minutes | 40004    | NULL     | NULL | NULL     |
| 10005    | 2001         | A beautiful Mind                              | 135 minutes | 40004    | NULL     | NULL | NULL     |
| 10006    | 2002         | Chicago                                       | 113 minutes | 40005    | NULL     | NULL | NULL     |
| 10007    | 2003         | The Lord of the Rings: The return of the King | 201 minutes | 40006    | NULL     | NULL | NULL     |
| 10008    | 2004         | Million Dollar Baby                           | 132 minutes | 40007    | NULL     | NULL | NULL     |
| 10009    | 2005         | Crash                                         | 112 minutes | 40008    | NULL     | NULL | NULL     |
| 10010    | 2006         | The Departed                                  | 151 minutes | 40009    | NULL     | NULL | NULL     |
| 10011    | 2007         | No Country for Old Men                        | 122 minutes | 40009    | NULL     | NULL | NULL     |
| 10012    | 2008         | Slumdog Millionaire                           | 120 minutes | 40008    | NULL     | NULL | NULL     |
| 10013    | 2009         | The Hurt Locker                               | 131 minutes | 40009    | NULL     | NULL | NULL     |
| 10014    | 2010         | The King\s speech                             | 118 minutes | 40010    | NULL     | NULL | NULL     |
| 10015    | 2011         | The Artist                                    | 100 minutes | 40011    | NULL     | NULL | NULL     |
| 10016    | 2012         | Argo                                          | 120 minutes | 40012    | NULL     | NULL | NULL     |
| 10017    | 2013         | 12 Years a Slave                              | 134 minutes | 40004    | NULL     | NULL | NULL     |
| 10018    | 2014         | Birdman or The Unexpected Virtue of Ignorance | 119 minutes | 40003    | NULL     | NULL | NULL     |
| 10019    | 2015         | Spotlight                                     | 129 minutes | 40008    | NULL     | NULL | NULL     |
| 10020    | 2016         | Moonlight                                     | 111 minutes | 40013    | NULL     | NULL | NULL     |
| 10021    | 2017         | The Shape of Water                            | 123 minutes | 40012    | NULL     | NULL | NULL     |
| 10022    | 2018         | Green Book                                    | 130 minutes | 40011    | NULL     | NULL | NULL     |
+----------+--------------+-----------------------------------------------+-------------+----------+----------+------+----------+
SELECT *
FROM databaseoscars.movie a
LEFT JOIN  databaseoscars.`movie cast` b ON a.Movie_ID = b.Actor_ID;

我希望输出是所有数据显示在一张桌子上。

1 个答案:

答案 0 :(得分:1)

您的问题在这里:a.Movie_ID = b.Actor_ID。电影永远不会是演员。改用您的电影投放表的电影ID:

SELECT * 
FROM databaseoscars.movie m
LEFT JOIN databaseoscars.`movie cast` mc ON mc.movie_id = m.movie_id;

在MySQL和MariaDB中,您还可以使用USING子句:

SELECT * 
FROM databaseoscars.movie m
LEFT JOIN databaseoscars.`movie cast` mc USING (movie_id);