【发布时间】:2026-02-11 19:55:01
【问题描述】:
我正在制作一个简单的博客系统,其中帖子可以有多个类别,所以我有这个查询:
SELECT *, GROUP_CONCAT(item_category) AS item_categories
FROM (`dev_pages`)
LEFT JOIN `dev_items_to_categories` ON `dev_items_to_categories`.`item_id` = `dev_pages`.`page_id`
WHERE deleted_time IS NULL
AND `page_type` = 'blog'
AND `item_category` = '16'
ORDER BY `page_title` ASC
它工作正常,但如果没有结果而不是返回空,它返回 NULL 或默认值(参见 SQL Fiddle)
我设法解决了问题,但我想知道是否有人对此有更好的解决方案:
SELECT a.* FROM (
SELECT *, GROUP_CONCAT(item_category) AS item_categories
FROM (`dev_pages`)
LEFT JOIN `dev_items_to_categories` ON `dev_items_to_categories`.`item_id` = `dev_pages`.`page_id`
WHERE deleted_time IS NULL
AND `page_type` = 'blog'
AND `item_category` = '16'
ORDER BY `page_title` ASC
) AS a
WHERE page_id > 0
【问题讨论】:
-
你错过了
GROUP BY。并且dev_items_to_categories表上的任何条件都应该在ON子句中,而不是WHERE。
标签: mysql sql group-concat