作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望能够在类别表中找到条件为 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
关于MySQL 使用 NOT IN 作为临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14451007/
我是一名优秀的程序员,十分优秀!