【问题标题】:MySql: Selecting all posts with category id=2 and 3MySql:选择类别 id=2 和 3 的所有帖子
【发布时间】:2012-11-21 01:45:55
【问题描述】:

我有以下包含 2 列的数据库:

posts id    category id
1           2
2           1
1           3
3           3
3           2
4           5

我需要一个查询,当提取属于类别 2 和 3 的所有帖子 ID 时 这意味着:ID 为 1 和 3 的帖子。

【问题讨论】:

标签: mysql sql categories posts


【解决方案1】:

选择类别 2 和 3 中的所有帖子 ID:

SELECT posts_id
FROM posts
WHERE categoryId IN (2, 3)
GROUP BY posts_id
HAVING COUNT(distinct categoryId) = 2;

仅选择仅与category_id = 5 相关联的帖子 ID,而不与任何其他帖子 ID:

SELECT posts_id
FROM posts
GROUP BY posts_id
HAVING SUM(categoryId <> 5) = 0;

【讨论】:

  • 非常感谢......它为我完成了工作。我还有一个问题..它是关于同一张桌子的...我怎样才能只选择仅与类别 id 5 相关联而不与任何其他类别相关联的帖子 id。
  • 在第一个查询中,SELECT posts_id, category_id 应该只有 SELECT posts_id
  • 由于某种原因,第二个示例不起作用 :(.. 我得到了与 category_id 5 相关联的 ID,但它们也与其他类别相关联...
  • @MiroslavVasilev:我再次更新了我的答案。现在它应该可以工作了。
  • @ypercube 是的,现在它运行良好,再次非常感谢您的帮助
【解决方案2】:
SELECT post_id, category_id
FROM posts
WHERE category_id IN (2, 3)
GROUP BY post_id
ORDER BY category_id;

【讨论】:

  • 非常感谢......它为我完成了工作。我还有一个问题..它是关于同一张桌子的...我怎样才能只选择仅与类别 id 5 相关联而不与任何其他类别相关联的帖子 id。
  • SELECT post_id FROM posts WHERE category_id = 5;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多