gpt4 book ai didi

mysql - SQL 返回 NULL 而不是空结果

转载 作者:行者123 更新时间:2023-11-29 06:43:42 25 4
gpt4 key购买 nike

SQL FIDDLE HERE

我正在制作一个简单的博客系统,其中帖子可以有多个类别,所以我有这个查询:

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 子句:

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` AND `item_category` = '16'
WHERE deleted_time IS NULL
AND `page_type` = 'blog'
GROUP BY dev_pages.page_id
ORDER BY `page_title` ASC

您还需要将 item_category = '16' 放入 ON 子句中。否则,您将过滤掉 dev_items_to_categories 中没有匹配项的行;因为您使用的是 LEFT JOIN 而不是 INNER JOIN,所以我假设您想要那些具有空匹配的行。

FIDDLE

关于mysql - SQL 返回 NULL 而不是空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19910142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com