SELECT p1.id,
p2.id,
p3.id,
p4.id,
p5.id
FROM social_media_mareketing_blog p1
INNER JOIN social_engine_mareketing_blog p2 ON p1.id = p2.id
INNER JOIN branding p3 ON p2.id = p3.id
INNER JOIN strategy p4 ON p3.id = p4.id
INNER JOIN mobile_marketing p5 ON p4.id = p5.id
WHERE p1.id = '1' LIMIT 0 , 30
这个查询可以在MySQL中加入5个表吗?
答案 0 :(得分:0)
查询在语法上是正确的。仅限:您通常不会为不同的表使用相同的ID。在您的查询中,您找到id为1的记录,然后在下一个表中查找id为1的记录,依此类推。只显示结果中的那些(和两个等)。我敢说这没有多大意义。
此外,你总会首先考虑你想要展示的内容。你真的对所有五张桌子的组合感兴趣吗?或者您是否希望显示移动营销存在的行(例如,您最好使用EXISTS子句而不是连接)。另外:其他表中是否总会有匹配的记录?否则你将不得不使用外连接表,而不是使用内部连接。
最后两个侧面评论:你通常不会在没有指定订单的情况下限制你的结果,但我想这只是为了测试目的,对吧?为了便于阅读,您可以使用有意义的别名,例如mb用于媒体博客,eb用于引擎块(或任何你喜欢的;可能是smmb用于social_media_mareketing_blog),而不是a,b,c,d或p1,p2 ,p3,p4。
以下是典型查询的示例:
SELECT
mb.blog_id,
mb.id,
mb.content,
eb.id,
eb.content,
...
FROM social_media_mareketing_blog mb
LEFT JOIN social_engine_mareketing_blog eb ON eb.blog_id = mb.blog_id
...
WHERE mb.id = '1'
AND EXISTS
(
select *
from mobile_marketing mm
where mm.marketing_id = mb.marketing_id
);