MySQL IFNULL在表上没有返回0,没有按预期匹配的记录

时间:2015-05-26 20:38:24

标签: mysql

我正在尝试计算用户使用的搜索次数:

SELECT IFNULL(COUNT(`searches`.`internalKey`),0) AS `activity`, `modUser`.`username`, `modUser`.`active`, `modUser`.`id` AS `customer_id`,`UserGroupMembers`.`user_group`, `Profile`.*, `extdata`.*
FROM `modx_users` AS `modUser`
LEFT JOIN `modx_user_attributes` `Profile` ON `modUser`.`id` = `Profile`.`internalKey`
LEFT JOIN `modx_member_groups` `UserGroupMembers` ON `modUser`.`id` = `UserGroupMembers`.`member`
LEFT JOIN `modx_gssi_user_ext_data` `extdata` ON `extdata`.`internalKey` = `modUser`.`id`
LEFT JOIN `modx_gssi_user_queries` `searches` ON `searches`.`internalKey` = `modUser`.`id`
WHERE (`UserGroupMembers`.`user_group` IN (2))
GROUP BY `searches`.`internalKey`
ORDER BY `Profile`.`fullname`;

如果用户[由他们的internaKEy标识]没有执行任何搜索,则modx_gssi_user_queries表中没有记录&应该是NULL,但IFNULL语句似乎没有像我期望的那样工作。

我在这里做错了什么。

1 个答案:

答案 0 :(得分:1)

不要GROUP BY表中可能没有匹配项的列,因为这会将没有搜索的所有用户组合到一个组中。使用GROUP BY modUser.id