我有一種情況,我需要將一個對象同時與多個標籤進行匹配,以便將結果集「縮小」以匹配所有標籤。我發現了以下MySQL查詢:MySQL:返回匹配所有標籤的對象數
SELECT *
FROM OBJECTS o
JOIN OBJECTSTAGS ot ON ot.object_id = o.id
JOIN TAGS t ON t.id = ot.tag_id
WHERE t.name IN ('tag1','tag2')
GROUP BY o.id
HAVING COUNT(DISTINCT t.name) = 2
...其中2是正在匹配的標記數。它工作正常。
但是,我需要查詢返回對象的計數,而不是對象本身。如果我將COUNT(*)
添加到SELECT
,此查詢似乎會使自己感到困惑。例如,我很猶豫是否只返回了ID,然後對它們進行PHP計數,因爲它們可能會加起來非常大。因此,我希望MySQL能夠返回計數。
任何人都可以提出一個很好的方法來做到這一點?把它分成兩個查詢是可以接受的。
在此先感謝。
需要明確的是 - 你想匹配的所有對象的數量,或者每個對象計數?預期結果的一個例子會有所幫助。 – 2011-05-06 21:10:58
@OMG小馬:對象的數量,只有一個數字作爲結果。例如:與這些標籤匹配的總共550個對象。 – Tom 2011-05-06 21:13:41
http://www.php.net/manual/en/function.mysql-num-rows.php;這可能有幫助。 編輯:哎呦,以爲這是php,這是無關緊要的 – aph107 2011-05-06 21:15:09