【发布时间】:2014-01-21 20:24:22
【问题描述】:
我遇到了一个我真的不知道如何解决的问题。所以我有一个带有下表的多对多关系模型:'posts'、'tags'、'posts_to_tags'。 假设我想获取所有标签以“s”和“t”开头的帖子。我使用以下查询:
SELECT DISTINCT o.id
FROM posts o
JOIN posts_to_tags ot ON o.id = ot.post_id
JOIN tags t ON ot.tag_id = t.id
WHERE t.name REGEXP '^s|^t'
GROUP BY o.id
HAVING COUNT(o.id) = 2
这在大多数情况下都可以正常工作,但并非总是如此。例如,如果有一个帖子具有以下标签:smee、smooth、lala 即使没有以“t”开头的标签(有 2 个以“s”开头的标签),查询也会成功。这里的帖子还应该有一个以“t”开头的标签。 有人对如何解决这个问题有任何提示吗? 我希望我把问题说清楚了。
提前谢谢你。
【问题讨论】:
-
你的意思是标签应该包含至少一个匹配以每个字符开始,对吧?所以
smee, tooth, lala将匹配您的示例。 -
是的,就是这样!当然,“s”和“t”是要测试的。