SQL连接两个表格,其中ID匹配。

8

I have two tables in my database.

Movies table:

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

电影链接表:

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

目前,我只从Movies表中选择标题类似于以下示例的行:

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

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


2
将整篇文章都使用标题大小写格式大写会让阅读变得非常困难。我已经解决了这个问题。感谢您未来发布文章时使用正常的大小写! :) - stakx - no longer contributing
5个回答

13

使用ID匹配的SQL连接两个表

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

5

测试以下查询:

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,


1

只需在匹配的列上进行连接:

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

我尝试了您的查询,但是我只有两部名为“ The Host”的电影。但现在它返回46个链接,几乎与我拥有的该电影的链接数相同。 - Ashley Williams
此查询将返回所有电影链接,其中名称类似于“%The Host%”。如果您只想获取ID为1的电影链接,则将WHERE更改为“WHERE m.ID = 1”。 - artm

0

尝试使用join(已删除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

0
你可以尝试这样做一个连接:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接