加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql – 如何在具有外部联接和分组依据的查询中包含NULL值

发布时间:2021-05-22 12:47:18 所属栏目:MySql教程 来源:网络整理
导读:我有两个包含以下示例数据的表: Table 1: `item_name`| item_id | item_desc || 1 | apple || 2 | orange || 3 | banana || 4 | grape || 5 | mango |Table 2: `user_items`| user_id | item_id || 127 | 1 || 127 | 2 || 127 | 4 || 128 | 1 || 128 | 5

我有两个包含以下示例数据的表:

Table 1: `item_name`
| item_id | item_desc |
| 1       | apple     |
| 2       | orange    |
| 3       | banana    |
| 4       | grape     |
| 5       | mango     |

Table 2: `user_items`
| user_id | item_id |
| 127     | 1       |
| 127     | 2       |
| 127     | 4       |
| 128     | 1       |
| 128     | 5       |

我正在尝试使用以下查询选择user_id 127和128中的每个item_id以及相应的item_desc:

SELECT IFNULL(COUNT(ui.user_id),0) AS total,in.item_desc 
FROM user_items AS ui 
RIGHT OUTER JOIN item_name AS in 
    ON ui.item_id = in.item_id 
WHERE ui.user_id IN (127,128) 
GROUP BY ui.item_id
ORDER BY total DESC

上述查询的结果是:

| total | item_desc |
| 2     | apple     |
| 1     | orange    |
| 1     | grape     |
| 1     | mango     |

但是它没有包含item_id 3,banana,我想用RIGHT OUTER JOIN检索它.我希望得到一个看起来像这样的结果:

| total | item_desc |
| 2     | apple     |
| 1     | orange    |
| 1     | grape     |
| 1     | mango     |
| 0     | banana    |

有没有办法修改查询以最终得到上面的预期结果?
感谢您的时间. 最佳答案 您的查询使用count时出现了一点错误.这有效.

select count(ui.item_id) as total,in.item_desc
from   item_name `in`
       left join user_items ui on ui.item_id = in.item_id
                                        and ui.user_id in (127,128)
group by
       in.item_desc
order by total desc

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读