我有一张表,用于保存标签及其参考。例如:
| tag | tableName | rowId |
| ---- | --------- | ----- |
| tag1 | table1 | 1 |
| tag2 | table1 | 1 |
| tag1 | table2 | 1 |
我想形成一个查询,说类似“获取不同的表名和 rowId WHERE 它具有所有这些标签:'tag1','tag2'”
该表的目的是使按标签查找表中的行变得容易。也许我在解决这个问题上完全走错了方向。
我怎样才能做到这一点并保持高性能?
谢谢您的帮助。
好的,我相信我有一个满意的答案。
我对此很陌生,但此查询允许它查找所有匹配项并按 tableName 和 rowId 对它们进行分组。在返回结果之前,它将行限制为与搜索的标签数量完全匹配的行。
如果有人知道更好的方法来做到这一点,我愿意提出建议。谢谢。
编辑 07/06/2018
@akina 和@RickJames 都指出此查询仅在行唯一时才有效,并提供了两种解决方案来解决此问题。请参阅下面的评论。