我真的希望有人能帮我解决问题。我想通过group_concat实现与查询的匹配。
我需要这样的东西:
Select c.id, p.place
from content c
join place p on p.object_id = c.id
where match(group_concat(p.place)) AGAINST('"string1" "string2" "string3"', IN BOOLEAN MODE)
and not match (group_concat(p.place)) AGAINST('string4', IN BOOLEAN MODE)
我试图使用也有条款但不起作用。
目前我不知道如何解决这个问题。有人可以帮我解决这个问题吗? 非常感谢。
答案 0 :(得分:3)
您将无法在WHERE子句中使用GROUP_CONCAT
- 聚合函数只能在HAVING
子句中使用。但您可以使用派生表/内联视图来获取GROUP_CONCAT输出,如下所示:
SELECT c.id,
x.place
FROM CONTENT c
JOIN (SELECT p.object_id,
p.place,
GROUP_CONCAT(p.place) AS grp_place
FROM PLACE p
GROUP BY p.object_id) x ON x.object_id = c.id
WHERE MATCH(x.grp_place) AGAINST('"string1" "string2" "string3"', IN BOOLEAN MODE)
AND NOT MATCH(x.grp_place AGAINST('string4', IN BOOLEAN MODE)
MySQL允许GROUP BY中的“隐藏”列:http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html