选择情况下,COUNT(*)

达克

我想选择已将某些内容标记为收藏的用户数,如果当前用户是否已“投票”,也要返回。我的桌子看起来像这样

CREATE TABLE IF NOT EXISTS `favorites` (
`user` int(11) NOT NULL DEFAULT '0',
`content` int(11) NOT NULL DEFAULT '0',
 PRIMARY KEY  (`user`,`content`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 ;

说我有3行包含

INSERT INTO `favorites` (`user`, `content`) VALUES
(11, 26977),
(22, 26977),
(33, 26977);

使用这个

SELECT COUNT(*), CASE
        WHEN user='22'
           THEN 1
           ELSE 0
   END as has_voted
FROM favorites WHERE content = '26977'

我希望得到has_voted=1COUNT(*)=3但是

我得到的has_voted=0COUNT(*)=3这是为什么?如何解决?

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

这是因为您将聚合表达式和非聚合表达式混合在一个中SELECT聚合表达式可在许多行上工作;非聚合表达式在单个行上工作。聚合(即COUNT(*))和非聚集的(即CASE)表达式应该出现在同一个SELECT,当你有一个GROUP BY,这没有任何意义在你的情况。

您可以通过汇总第二个表达式来修复查询-即SUM在其周围添加一个,如下所示:

SELECT
    COUNT(*) AS FavoriteCount
,   SUM(CASE WHEN user=22 THEN 1 ELSE 0 END) as has_voted
FROM favorites
WHERE content = 26977

现在,两个表达式都已汇总,因此您应该获得预期的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

选择情况下,COUNT(*)

来自分类Dev

什么是选择Katalon在硒的情况下?

来自分类Dev

在某些情况下选择“求和”列

来自分类Dev

TSQL变量赋值在“ then”情况下的选择情况

来自分类Dev

在我的情况下如何选择某些孩子

来自分类Dev

默认情况下,在ManyToManyField中选择所有选项

来自分类Dev

在未选择任何项目的情况下启动ListView

来自分类Dev

在gridview中的链接按钮的情况下选择行的id

来自分类Dev

选择不同情况下的ORDER BY问题

来自分类Dev

查询性能-仅在存在的情况下选择

来自分类Dev

在某些情况下,vi是唯一的选择吗?

来自分类Dev

仅在满足条件的情况下选择某些列

来自分类Dev

默认情况下,ag-grid导出选择行

来自分类Dev

BigQuery仅在不为null的情况下选择列

来自分类Dev

如何在不使用JPQL的情况下选择多行?

来自分类Dev

PrimeNg默认情况下选择菜单的子项

来自分类Dev

默认情况下如何创建不带选项的选择

来自分类Dev

选择器在特定情况下的独占CSS

来自分类Dev

在某些情况下,vi是唯一的选择吗?

来自分类Dev

mysql,仅在存在的情况下如何选择

来自分类Dev

仅在选择美国的情况下创建下拉列表

来自分类Dev

在没有属性的情况下选择记录?

来自分类Dev

如何在不打开文件的情况下选择文件?

来自分类Dev

在这种情况下选择多个班级

来自分类Dev

如何在选择属性的情况下获取选项的值

来自分类Dev

在某些情况下选择全部的 Where 子句

来自分类Dev

没有 if else 的情况下动态选择依赖项

来自分类Dev

在某些情况下,空类是否是正确的选择?

来自分类Dev

MYSQL的情况下