1

2つのフィールドを持つテーブル「posts_tags」があります

post_id  tag_id
1          10
1          7
1          9
2          3
2          9
2          10
3          9
3          10

すべての投稿タグを含む post_id のみを返したい

私のリクエストは次のようになります

SELECT * FROM posts_tags WHERE tag_id IN (10, 9) GROUP BY post_id;

リクエストは post_id 1, 2 et 3 を返します。post_id 3 のみを返したい

解決策は何ですか?

4

5 に答える 5

1
SELECT   post_id
FROM     posts_tags
GROUP BY post_id
HAVING   SUM(tag_id= 9)
     AND SUM(tag_id=10)
     AND NOT SUM(tag_id NOT IN (10,9))
于 2013-04-30T13:47:05.023 に答える
0
SELECT
  post_id
FROM posts_tags as pt
WHERE tag_id IN(9,10)
    AND tag_id NOT IN(SELECT
            post_id
              FROM posts_tags
              WHERE tag_id NOT IN(9,10))
于 2013-04-30T13:55:46.067 に答える
0
SELECT * FROM posts_tags WHERE tag_id IN (10, 9) and post_id=3;
于 2013-04-30T13:45:34.583 に答える
0
SELECT post_id
FROM post_tags
GROUP BY post_id
HAVING
  COUNT(
    DISTINCT CASE WHEN tag_id IN (9,10) THEN tag_id END)=2
  AND COUNT(DISTINCT tag_id)=2
于 2013-04-30T13:46:56.430 に答える