繁体   English   中英

MySQL将NOT IN用于临时表

[英]MySQL using NOT IN for temp table

我希望能够在条件表中查找条件为visible = 0行,而不是来自以下查询结果的行:

SELECT c.id as cat_id, j.id
FROM category c
LEFT JOIN portfolio_job_category pjc
ON pjc.category_id = c.id
LEFT JOIN job j
ON j.id = pjc.job_id
WHERE c.visible = 0
AND j.end_date > CURRENT_DATE
GROUP BY c.id

有没有办法使用NOT IN来找到这个?

我在下面尝试过,但这会永远循环并导致mysqld崩溃

SELECT c.id
FROM category c
WHERE c.id NOT IN
(SELECT c.id as cat_id, j.id
FROM category c
LEFT JOIN portfolio_job_category pjc
ON pjc.category_id = c.id
LEFT JOIN job j
ON j.id = pjc.job_id
WHERE c.visible = 0
AND j.end_date > CURRENT_DATE
GROUP BY c.id)
AND visible = 0

您不尝试使用LEFT JOIN做什么

SELECT  a.ID
FROM    category a
        LEFT JOIN
        (
            SELECT  c.id as cat_id
            FROM    category c
                    LEFT JOIN portfolio_job_category pjc
                        ON pjc.category_id = c.id
                    LEFT JOIN job j
                        ON j.id = pjc.job_id
            WHERE   c.visible = 0 AND 
                    j.end_date > CURRENT_DATE
        ) b ON a.ID = b.ID
WHERE   b.ID IS NULL AND
        a.visible = 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM