【发布时间】:2016-12-06 09:20:01
【问题描述】:
我的数据库中有 3 个表。
表tags 包括:tag_id、tag_name
表person 包括:person_id、person_name 等
表maintag 包括:main_tag_id、tag_id、person_id
例如,有一个名叫 Benny 的人有标签 new york、fat 和 smart。每次我都这样搜索:
SELECT p.person_name, p.gpa, p.phone_number FROM person p
LEFT JOIN maintag mg ON mg.person_id = p.person_id
LEFT JOIN tags t ON t.tag_id = mg.tag_id
WHERE t.tag_name LIKE '%fat%' AND t.tag_name LIKE '%smart%'
它将返回 0。当我想选择具有多个标签的项目时,我的查询应该是什么样子?
我已阅读 MySQL - select all items with multiple hashtags 并没有回答我的问题。
【问题讨论】:
-
去掉WHERE语句会返回什么?
-
它只返回所有组合在一起的表。对于没有标签的人,它将在 tag_name 字段中包含“NULL”
-
在您的情况下尝试使用
OR而不是AND。你也收到错误吗?尝试做一些错误报告。 -
如果我使用 or,那么如果我搜索多个标签,例如(“fat”、“smart”、“books”),它将返回 Benny。而本尼不属于“书籍”
-
将
person列指定为p后对我来说很好。有更新吗?