我需要從我的MySQL表中選擇一行。MYSQL選擇兩列值一列
在表中有兩行,其中有一個相等的值。
TABLE
-----
articleId
keywordId
現在我需要選擇一篇文章,有關鍵字ID = 1,以及關鍵字ID = 12
每一個環節,以關鍵字都有自己的紀錄。
如何才能做一個選擇查詢來知道是否有文章匹配兩個關鍵字?
我需要從我的MySQL表中選擇一行。MYSQL選擇兩列值一列
在表中有兩行,其中有一個相等的值。
TABLE
-----
articleId
keywordId
現在我需要選擇一篇文章,有關鍵字ID = 1,以及關鍵字ID = 12
每一個環節,以關鍵字都有自己的紀錄。
如何才能做一個選擇查詢來知道是否有文章匹配兩個關鍵字?
試試這個:
SELECT *
FROM tablename
WHERE keywordId IN (1, 12)
GROUP BY articleId
HAVING COUNT(*) = 2;
SELECT *
FROM `table_name`
WHERE `keywordId` = '1' AND `keywordId` = '12'
確保拼寫 '表' :) –
這就是所謂的Relation Division。這裏是這樣做的一個辦法:
SELECT *
FROM tablename
WHERE articleId IN
(
SELECT articleId
FROM tablename
WHERE KeywordId IN (1, 2)
GROUP BY articleId
HAVING COUNT(KeywordId) = 2
);;
當這個查詢在每分鐘的查詢次數中使用時,這個查詢是否會減慢數據庫的速度? –
@ user1955019這取決於您在該表中有多少行。 –
SELECT *
FROM table
WHERE keywordId IN (1, 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
根據索引和表的大小這可能比集團通過更有效
thankssss大聲笑:P – CantThinkOfAnything
select ArticleId from Table where keywordId = 1
Intersect
select ArticleId from Table where KeywordId = 12
SELECT ccdn_nid,COUNT(*)FROM 'ccdn_cmdt' WHERE'cmdt_tid' IN(1,31584) GROUP BY'ccdn_nid' HAVING COUNT(*)= 2 我tryed這一點,但仍然獲得,只是在1 任何想法記錄結果? –
@ user1955019查看演示。 –
嘿Saharsh, 我仍然無法得到它的工作: 選擇'ccdn_nid' FROM'ccdn_cmdt' 其中'cmdt_tid'IN(1,31641) GROUP BY'ccdn_nid' HAVING COUNT(*) = 2 我的表看起來像這樣: ccdn_nid INT(11) cmdt_tid INT(11) ccdncmdt_outpid INT(11) 仍然得到一個結果的結果。 –