【问题标题】:SQL join two tables where IDs matchSQL 连接两个 ID 匹配的表
【发布时间】:2015-01-05 19:06:10
【问题描述】:

我的数据库中有两个表。

Movies表:

+----------------------------------------
| ID | title                | timestamp |
+----------------------------------------
| 1  | The host             | time      |
| 2  | Fight Club           | time      |
| 4  | 21                   | time      |
----------------------------------------+

Movie_Links表:

+---------------------------------------+
| ID | link                 | movie_id  |
+---------------------------------------+
| 1  | some link            | 1         |
| 2  | some link            | 1         |
| 3  | some link            | 1         |
+---------------------------------------+

目前我只从Movies 表中选择title 类似的行,例如:

SELECT * FROM `Movies` 
WHERE `title` LIKE '%The Host%' 
ORDER BY `timestamp` DESC DESC LIMIT 30

但我想做的是与上面相同的查询,但加入Movie_Links 表,其中movie_id 等于Movies 表的ID,并获取所有具有Movie_id 等于1 的链接。

【问题讨论】:

  • 在标题大小写中将整个帖子大写会使阅读变得真正痛苦。我已经解决了。提前感谢您在以后的帖子中使用正常大写! :)

标签: sql jointable


【解决方案1】:

SQL 连接两个 ID 匹配的表

SELECT *
FROM Movies 
LEFT JOIN Movie_Links 
ON Movies.ID = Movie_Links.movie_id;

【讨论】:

    【解决方案2】:

    测试以下查询:

    SELECT ml.id,m.title,m.timestamp, ml.link
    FROM movies m ,Movie_Links ml
    WHERE m.id=ml.movie_id and title LIKE '%The Host%'
    

    BR,

    【讨论】:

      【解决方案3】:

      只需加入匹配的列:

      SELECT * FROM movies m
      JOIN MovieLinks ml
      ON ml.movie_id = m.id
      WHERE m.title LIKE '%The Host%' 
      

      【讨论】:

      • 好吧,我试试你的查询,但我只有 2 部名为 The Host 的电影,但现在它返回了 46 个我为该电影拥有的所有相同数量的链接
      • 此查询将返回名称为 %The Host% 的所有电影的所有链接,如果您只想获取 id 为 1 的电影的链接,请将您的位置更改为 @987654324 @.
      【解决方案4】:

      尝试加入(删除 order by 子句,因为我在上述问题中看不到这些字段):

      SELECT m.*, ml.link 
      FROM movies m join Movie_Links ml
      ON   m.id = ml.movie_id 
      WHERE m.title LIKE '%The Host%' 
      AND   m.id = 1
      AND   ml.id = 1
      --ORDER BY `featured` DESC,`date_added` DESC,`released` DESC LIMIT 30
      

      【讨论】:

        【解决方案5】:

        你可以尝试这样的加入:

        SELECT * FROM 'movies'
        WHERE 'title" LIKE '%The Host%'
        AND Movies.id = Links.id
        AND Links.id = 1
        ORDER BY 'featured' DESC, 'date_added' DESC, 'released' DESC LIMIT 30
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-08-24
          • 1970-01-01
          • 2013-12-23
          • 2023-03-09
          • 2014-09-15
          • 2015-03-16
          • 2014-08-09
          相关资源
          最近更新 更多