我有一种情况,我需要将一个对象同时与多个标签进行匹配,以便将结果集“缩小”以匹配所有标签。我发现了以下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