11

mysqlテーブルから行を選択する必要があります。

テーブルには、1つの等しい値を持つ2つの行があります。

TABLE
-----
articleId
keywordId

次に、キーワードId=1とキーワードId=12の記事を選択する必要があります。

キーワードへのすべてのリンクには、独自のレコードがあります。

2つのキーワードに一致する記事がある場合、1つの選択クエリを実行して知るにはどうすればよいですか?

4

6 に答える 6

14

これを試して:

SELECT *  
FROM tablename 
WHERE keywordId IN (1, 12) 
GROUP BY articleId 
HAVING COUNT(*) = 2; 

SQLFIDDLEDEMOを確認してください

于 2013-01-07T12:41:23.587 に答える
3

これはリレーションディビジョンと呼ばれます。これを行う1つの方法は次のとおりです。

SELECT * 
FROM tablename 
WHERE articleId IN
(
   SELECT articleId
   FROM tablename
   WHERE KeywordId IN (1, 2) 
   GROUP BY articleId
   HAVING COUNT(KeywordId ) = 2
);;
于 2013-01-07T12:43:48.317 に答える
1
SELECT * 
FROM `table_name` 
WHERE `keywordId` = '1' AND `keywordId` = '12' 
于 2013-01-07T12:41:06.170 に答える
1

キーワードごとにサブクエリを使用して参加することもできます

select k1.articleId from
(
    select articleId from TABLE where keywordId = 1
) k1
inner join
(
    select articleId from TABLE where keywordId = 12
) k2 on k1.articleId = k2.articleId

インデックスとテーブルサイズによっては、これはGroupByよりも効率的です。

于 2013-01-07T12:46:52.410 に答える
0
SELECT * 
FROM table 
WHERE keywordId IN (1, 12);
于 2013-01-07T12:44:44.350 に答える
0
select ArticleId from Table where keywordId = 1
Intersect
select ArticleId from Table where KeywordId = 12
于 2015-03-25T11:03:37.480 に答える