将JOIN添加到SQL查询

时间:2016-06-08 09:33:23

标签: mysql join

我有以下MySQL查询:

SELECT 
    p.page_id,
    p.page_title,
    'post',
    p.mem_id,
    p.page_active,
    p.page_timestamp,
    p.page_meta_description,
    p.page_meta_keywords,
    p.page_img,
    p.page_score,
    p.page_summary,
    p.page_cd_title,
    p.label_id
FROM
    (SELECT 
        page_id
    FROM
        page
    ORDER BY page_id
    LIMIT 10000 , 5000) o
        JOIN
    page p ON p.page_id = o.page_id
ORDER BY p.page_id

我需要为此查询添加另一个JOIN,如下所示:

LEFT JOIN `subpage` sp 
ON (p.page_id = sp.page_id) 
WHERE p.page_type = 'cd'

我已经尝试在查询中已经存在的LEFT JOIN之后添加JOIN,但它会给我一个SQL语法错误。我试过把它放在不同的地方,但无济于事。

如何将查询与LEFT JOIN组合?

1 个答案:

答案 0 :(得分:1)

在第一次加入ON之后粘贴它,就像这样;

SELECT  p.page_id, p.page_title, 'post', p.mem_id, p.page_active, p.page_timestamp, p.page_meta_description, p.page_meta_keywords,p.page_img, p.page_score, p.page_summary, p.page_cd_title, p.label_id
FROM (
    SELECT page_id
    FROM page
    ORDER BY page_id
    LIMIT 10000, 5000
) o
JOIN page p
    ON p.page_id = o.page_id
LEFT JOIN `subpage` sp 
    ON p.page_id = sp.page_id 
    AND p.page_type = 'cd'
ORDER BY p.page_id

将JOIN和ON语句视为一个代码块是有帮助的,您不希望在它们之间放置任何东西。

我认为您可能希望您的WHERE实际上也是加入的一部分,所以我已经在上面进行了更改。这假设你只想在p.page_type ='cd'时从'subpage'返回数据。如果这是一个WHERE语句,那么你只会返回任何数据,其中p.page_type ='cd'