有没有替代MYSQL HAVING

时间:2012-02-07 12:00:25

标签: php mysql subquery having

我正在尝试根据他们拥有的标签找到一些记录。为了找出记录中的哪些标记,我使用子查询将它们添加到结果中。要找出应返回的结果,我在查询结尾添加了一个having语句。但有些事情告诉我这不是最好的方法。

SELECT e.id, e.title, e.text, e.introduction,
  UNIX_TIMESTAMP(e.starts_on) AS starts_on,
  UNIX_TIMESTAMP(e.ends_on) AS ends_on,
  m.id AS meta_id,
  m.url,
  cm.title AS category_title,
  cm.url AS category_url,
  CONCAT(
    ",",
    (
      SELECT GROUP_CONCAT(t.id)
      FROM modules_tags AS mt
      JOIN tags AS t ON t.id = mt.tag_id
      WHERE mt.other_id = e.id
    ),","
  ) AS tags_search
FROM event_posts AS e
INNER JOIN meta AS m ON e.meta_id = m.id
LEFT JOIN event_categories AS c ON e.category_id = c.id
LEFT JOIN meta AS cm ON c.meta_id = cm.id
LEFT JOIN modules_tags AS mt ON mt.other_id = e.id
LEFT JOIN tags AS t ON t.id = mt.tag_id
WHERE 1 HAVING tags_search LIKE '%,5,%' AND tags_search LIKE '%,6,%'

1 个答案:

答案 0 :(得分:1)

FIND_IN_SET()是在MySQL中以逗号分隔值查找值的最佳方法。