gpt4 book ai didi

mysql - SELECT 查询返回空结果错误

转载 作者:行者123 更新时间:2023-11-29 07:34:15 25 4
gpt4 key购买 nike

我正在使用 SELECT 查询作为下面给出的查询中的子查询...

SELECT COUNT (`Notification`.`id`) AS `count`
FROM `listaren_mercury_live`.`notifications` AS `Notification`
WHERE NOT FIND_IN_SET(`Notification`.`id`,(SELECT read_ids FROM read_notifications WHERE user_id = 46))
AND((notisfication_for IN("all","India"))
OR(FIND_IN_SET(46,notification_for))

此查询在以下情况下工作正常

SELECT read_ids FROM read_notifications WHERE user_id = userid)

返回结果如 21,22,23,24

但是当这个查询返回空的时候。

结果 ID 0 而不是 3。用户有 3 条未读通知;所以结果必须是 3

问题

当内部选择查询返回 like 时查询给出正确的结果

12,42 

但是如果查询返回null,那么整个查询的结果就变成0。

查询的预期结果

Expected Result

我得到的结果

Result I'm getting

我只想知道子查询是否返回空值。然后查询 (Notification.id,(SELECT read_ids FROM read_notifications WHERE user_id) = 46) 结果看起来像

 (`Notification`.`id`,(0))

代替

(`Notification`.`id`,())

所以它会正常工作

请告诉我在这方面我需要什么改进。

谢谢

最佳答案

尝试替换

FIND_IN_SET(`Notification`.`id`,(SELECT read_ids FROM read_notifications WHERE user_id = 46))

FIND_IN_SET(`Notification`.`id`,IFNULL((SELECT read_ids FROM read_notifications WHERE user_id = 46), ''))

来自manual ,如果子查询结果为空则返回NULL,FIND_IN_SET will return NULL if either argument is NULL , 和 NOT NULL is still NULL, as is NULL AND 1, and NULL is equivalent to false .因此,当子查询返回 NULL 时,您的 WHERE 条件将失败。

通过在子查询结果周围添加一个 IFNULL,您可以让它返回一个对 FIND_IN_SET 有效的值,这将使您的查询按预期工作。

关于mysql - SELECT 查询返回空结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49731404/

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