MySQL匹配多个值

Ste*_*eng 2 mysql

我有下表:

nid | tag_id
--------------
1   | 213
1   | 78
2   | 938
2   | 1002
2   | 8573
2   | 5
3   | 3957
3   | 487
4   | 56
Run Code Online (Sandbox Code Playgroud)

我想要检索一个nid,其中tag_id匹配多个值,例如1002,938,8573.

我从以下查询开始:

SELECT nid,GROUP_CONCAT(DISTINCT tag_id ORDER BY tag_id) tag_ids FROM table GROUP BY nid
Run Code Online (Sandbox Code Playgroud)

返回:

nid | tag_ids
--------------
1   | 78,213
2   | 5,938,1002,8573
3   | 487,3957
4   | 56
Run Code Online (Sandbox Code Playgroud)

但我还没有发现任何东西,这将允许我再次匹配tag_ids列我的值集.我需要它来匹配所有的价值观.

也许我的方法错了,很高兴看到不同的方法.

Mar*_*k B 7

假设您正在使用某种应用程序代码构建查询,则可以使用

SELECT nid
FROM table
WHERE tag_id IN (tag1, tag2, tag3, ...)
GROUP BY nid
HAVING COUNT(*) = n;
Run Code Online (Sandbox Code Playgroud)

其中n是列表中的标签数量.这应该找到与您的整个标签列表匹配的所有nids.