首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将别名与MySQL左连接一起使用

如何将别名与MySQL左连接一起使用
EN

Stack Overflow用户
提问于 2011-10-16 05:53:40
回答 4查看 91.9K关注 0票数 31

我最初的查询是使用WHERE子句进行连接,而不是连接。我意识到这不是返回没有任何明星或流派没有显示的电影,所以我想我必须做一个左连接才能显示每一部电影。下面是我的原始SQL:

SELECT *
FROM movies m, stars s, stars_in_movies sm, genres g, genres_in_movies gm
WHERE m.id = sm.movie_id
AND sm.star_id = s.id
AND gm.genre_id = g.id
AND gm.movie_id = m.id
AND m.title LIKE '%the%'
AND s.first_name LIKE '%Ben%'
ORDER BY m.title ASC
LIMIT 5;

我试着在电影中做一个左连接,我肯定做错了什么。

SELECT *
FROM movies m, stars s, stars_in_movies sm, genres g, genres_in_movies gm
LEFT JOIN movies m1 ON m1.id = sm.movie_id
LEFT JOIN movies m2 ON m2.id = gm.movie_id
AND sm.star_id = s.id
AND gm.genre_id = g.id
ORDER BY m.title ASC
LIMIT 5;

我清楚地知道连接是错误的,我就是看不出它是什么。

EN

回答 4

Stack Overflow用户

发布于 2011-10-16 06:00:08

您应该将与连接相关的条件放在同一个ON子句中。但是,对于上面的问题,您应该使用以下查询:

SELECT *
FROM movies m 
LEFT JOIN stars_in_movies sm ON sm.movie_id = m.id
JOIN stars s ON sm.star_id = s.id
LEFT JOIN genres_in_movies gm ON gm.movie_id = m.id
JOIN genres g ON gm.genre_id = g.id
ORDER BY m.title ASC
LIMIT 5;
票数 6
EN

Stack Overflow用户

发布于 2015-06-05 21:34:49

也许很难看,但它的工作方式就在这里。当心这是丑陋的,很多人都在警告这种黑客

SELECT *
FROM movies m, stars_in_movies sm LEFT JOIN movies m1 ON m1.id = sm.movie_id, stars s
ORDER BY m.title ASC
LIMIT 5;

使用联接时,必须与包含要比较的列的右表进行联接。

票数 1
EN

Stack Overflow用户

发布于 2017-03-03 05:01:29

SQL Join (MySQL中的内部联接)

select emp1.id,emp1.name,emp1.job  from (select id, type as name, description as job from component_type as emp1)emp1
inner join 
emp
on emp1.id=emp.id;

左连接

select emp1.id,emp1.name,emp1.job  from (select id, type as name, description as job from component_type as emp1 where id between '1' AND '5')emp1
left join 
emp
on emp1.id=emp.id;

右连接

select emp1.id,emp1.name,emp1.job  from (select id, type as name, description as job from component_type as emp1)emp1
Right join 
(select * from emp where id between '1' and '5')exe
on emp1.id=exe.id;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7780890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档