Mysql Having子句中如何处理子查询是否返回null
下面是我的查询,如何处理返回null的子查询Mysql Having子句中如何处理子查询是否返回null,mysql,Mysql,下面是我的查询,如何处理返回null的子查询 SELECT p.parent_id, i.*, IF(p.parent_id IS NULL, 0, 1) AS has_child_rows, GROUP_CONCAT( JSON_OBJECT( 'lang', itt.lang, 'title', itt.title ) ) AS lang FROM ima
SELECT
p.parent_id,
i.*,
IF(p.parent_id IS NULL, 0, 1) AS has_child_rows,
GROUP_CONCAT(
JSON_OBJECT(
'lang', itt.lang,
'title', itt.title
)
) AS lang
FROM
image_tree i
LEFT JOIN (
SELECT parent_id
FROM image_tree
WHERE parent_id IS NOT NULL
GROUP BY parent_id
) p ON i.id = p.parent_id
LEFT JOIN image_tree_title as itt
ON itt.image_tree_id = i.id
GROUP BY i.url
HAVING i.parent_id = (
SELECT FROM image_tree where image_tree.id = 77
)
当我的子句中的子查询具有
子句时,如何处理这种情况:
(SELECT FROM image_tree where image_tree.id = 77)
返回
NULL
,但我仍然希望将该值与I.parent\u id
进行比较,并在它们都NULL
时进行匹配。实现此功能的一种方法是将这两个值替换为I.parent\u id
不可能的值,例如-1
当它们都NULL
时,即
HAVING IFNULL(i.parent_id, -1) = IFNULL((SELECT parent_id
FROM image_tree
WHERE image_tree.id = 77), -1)
注意,子查询的列部分缺少父id。执行此操作的一种方法是将这两个值替换为一个值,该值对于
i.parent\u id
来说是不可能的,例如-1
当它们为NULL
时,即
HAVING IFNULL(i.parent_id, -1) = IFNULL((SELECT parent_id
FROM image_tree
WHERE image_tree.id = 77), -1)
请注意,您在子查询的列部分缺少
parent\u id
。谢谢,先生,如果您找到了我的问题,请投票usefull@Ambulancelada不用担心-我很高兴能帮上忙。先生,有没有办法优化这个查询,因为我错误地得到了sql\u mode=only\u full\u group\u?@AmbunceLada您需要包括您需要的所有列正在通过子句获取分组。如果不知道你想要达到什么样的结果,很难回答。这可能值得再问一个问题……谢谢你,先生。如果你发现了我的问题,请投我的票usefull@Ambulancelada不用担心-我很高兴能提供帮助。先生,有没有办法优化此查询,因为我得到了sql\u mode=only\u full\u group\u by error?@ambuncelada您需要在group by
子句中包含所有要获取的列。如果不知道你想要达到什么样的结果,很难回答。这可能值得再问一个问题。。。