Mysql Having子句中如何处理子查询是否返回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

下面是我的查询,如何处理返回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 
    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
子句中包含所有要获取的列。如果不知道你想要达到什么样的结果,很难回答。这可能值得再问一个问题。。。