mysqlテーブルから行を選択する必要があります。
テーブルには、1つの等しい値を持つ2つの行があります。
TABLE
-----
articleId
keywordId
次に、キーワードId=1とキーワードId=12の記事を選択する必要があります。
キーワードへのすべてのリンクには、独自のレコードがあります。
2つのキーワードに一致する記事がある場合、1つの選択クエリを実行して知るにはどうすればよいですか?
これを試して:
SELECT *
FROM tablename
WHERE keywordId IN (1, 12)
GROUP BY articleId
HAVING COUNT(*) = 2;
SQLFIDDLEDEMOを確認してください
これはリレーションディビジョンと呼ばれます。これを行う1つの方法は次のとおりです。
SELECT *
FROM tablename
WHERE articleId IN
(
SELECT articleId
FROM tablename
WHERE KeywordId IN (1, 2)
GROUP BY articleId
HAVING COUNT(KeywordId ) = 2
);;
SELECT *
FROM `table_name`
WHERE `keywordId` = '1' AND `keywordId` = '12'
キーワードごとにサブクエリを使用して参加することもできます
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よりも効率的です。
SELECT *
FROM table
WHERE keywordId IN (1, 12);
select ArticleId from Table where keywordId = 1
Intersect
select ArticleId from Table where KeywordId = 12