2016-11-07 1031 views
0

以下是我的查询。我想从帖子表中只能得到10个帖子。不过,下面的LIMIT 10不会限制posts表中的结果,但它可以在另一个表上使用。使用LEFT JOIN时特定表上的LIMIT结果

任何人都可以帮助我解决这个问题吗?我真的很喜欢你的帮助。

SELECT posts.id , posts.cat_id , posts.school_id , posts.campus_id , posts.status , posts.priority , posts.title , posts.content , posts.phone , posts.email , posts.tags , posts.zip , posts.price_new , posts.price_old , posts.reviewed_by , posts.reviewed_date , posts.updated_date , posts.posted_date , posts.expired_date , posts.ip_address , schools.school_name, campuses.campus_name , meta.meta_key , meta_value , images.img_name 
FROM posts LEFT JOIN 
    meta 
    ON posts.id = meta.post_id LEFT JOIN 
    images 
    ON posts.id = images.post_id LEFT JOIN 
    schools 
    ON posts.school_id = schools.id LEFT JOIN 
    campuses 
    ON posts.campus_id = campuses.id 
ORDER BY posts.updated_date DESC LIMIT 10 
+0

请参阅http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry

回答

1

一种方法是使用子查询:

SELECT p.id , p.cat_id, p.school_id, p.campus_id , p.status, 
     p.priority, p.title, p.content, p.phone, p.email, p.tags, p.zip, 
     p.price_new, p.price_old, p.reviewed_by, p.reviewed_date, 
     p.updated_date, p.posted_date, p.expired_date, p.ip_address, 
     s.school_name, c.campus_name, 
     m.meta_key, m.meta_value, 
     i.img_name 
FROM (SELECT p.* 
     FROM posts p 
     ORDER BY p.updated_date DESC 
     LIMIT 10 
    ) p LEFT JOIN 
    meta m 
    ON p.id = m.post_id LEFT JOIN 
    images i 
    ON p.id = i.post_id LEFT JOIN 
    schools s 
    ON p.school_id = s.id LEFT JOIN 
    campuses c 
    ON p.campus_id = c.id; 

注意的是,使用表别名使查询更容易编写,阅读和理解。

+0

谢谢你的回答,但我得到了2个错误,你可以看看他们吗? http://screencast.com/t/QUGj2k9km http://screencast.com/t/bAz0rGb69htg –

+1

我看到'ORDER BY'丢失了。请再试一次@LouisTran – 1000111

+0

谢谢。但我试过你的修改后的查询,并得到这个http://screencast.com/t/1fyB4Cqc9 –