这看起来很基础,但我想不通。
我有一个表“item_tags”,我想选择所有匹配标签 1 和 2 的项目(例如,每个项目都必须有两个标签)。
我如何在 mysql 中执行此操作?
创建表是:
CREATE TABLE `item_tags` (
`uid_local` int(11) NOT NULL DEFAULT '0',
`uid_foreign` int(11) NOT NULL DEFAULT '0',
`sorting` int(11) NOT NULL DEFAULT '0',
KEY `uid_local` (`uid_local`),
KEY `uid_foreign` (`uid_foreign`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
谢谢!
最佳答案
使用:
SELECT i.uid
FROM ITEMS i
JOIN ITEM_TAGS it ON it.uid_local = i.uid
AND it.uid_foreign IN (1, 2)
GROUP BY i.uid
HAVING COUNT(DISTINCT it.uid_foreign) = 2
您需要定义 GROUP BY 和 HAVING 子句,并且不同标签 ID 的数量必须等于您在 IN 子句中指定的标签数量。
关于sql - 选择匹配多个标签的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3119840/