我查詢每行有多個標籤的表:MySQL查詢 - 搜索在連接表不篩選記錄
SELECT
user.*,
GROUP_CONCAT(tag.tag SEPARATOR ", ") as `tags`
FROM
user
LEFT JOIN
user_tag
ON
user_tag.user_id = user.id
LEFT JOIN
tag
ON
tag.id = user_tag.tag_id
GROUP BY
user.id
現在我希望能夠通過標籤進行搜索的用戶。 所以加入其中後,它看起來像這樣:
SELECT
user.*,
GROUP_CONCAT(tag.tag SEPARATOR ", ") as `tags`
FROM
user
LEFT JOIN
user_tag
ON
user_tag.user_id = user.id
LEFT JOIN
tag
ON
tag.id = user_tag.tag_id
WHERE
tag.tag LIKE "%engineer%" OR
tag.tag LIKE "%programmer%"
GROUP BY
user.id
然而,這手段(明顯),如果結果發現,標籤表未返回所有的用戶標籤了。所以選中的列tags
可能看起來像「php程序員」,即使用戶有更多的標籤。
有什麼方法可以在不使用子查詢的情況下實際限制返回的結果來搜索連接表嗎?
看來你想爲所有用戶添加一個標籤,例如「%engineer%」或「%programmer%」。但是,當然EXISTS子句被認爲是子查詢,所以也許這不是你想要的答案。如果是這樣,我可以告訴你如何構建查詢。 – hardmath 2011-01-20 11:51:37