簡體   English   中英

MYSQL選擇兩個值一列

[英]MYSQL Select on two values one column

我需要從我的mysql表中選擇一行。

在表中有兩行,其中一個值相等。

TABLE
-----
articleId
keywordId

現在我需要選擇一篇文章,其關鍵字ID = 1,以及關鍵字Id = 12。

關鍵字的每個鏈接都有自己的記錄。

如果有文章與兩個關鍵字匹配,我該怎么做一個選擇查詢才能知道?

試試這個:

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

檢查SQL FIDDLE DEMO

這稱為關系部門 這是一種方法:

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

根據索引和表大小,這可能比Group By更有效

SELECT * 
FROM table 
WHERE keywordId IN (1, 12);
select ArticleId from Table where keywordId = 1
Intersect
select ArticleId from Table where KeywordId = 12

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM