mysql - CASE 语句中的 COUNT?

标签 mysql

我想根据一个字段的计数对记录进行分类。 我的代码是:

 select `posts`.`post_customer_fs_id` AS `post_customer_fs_id`,count(`post_id`) AS `open_post_count`,
CASE count(`post_id`) 
WHEN count(`post_id`)=1 THEN 'A'
WHEN count(`post_id`)>1 THEN 'B'
END AS AAA
from `posts` where (`posts`.`post_status` = '3') AND posts.post_type_id='1' group by `posts`.`post_customer_fs_id` ;

出于某种原因,对于 COUNT 1 的记录,我收到 A,但对于 COUNT 大于 1 的记录,我收到 NULL。 post_id 是一个 INTEGER 字段。 任何帮助将不胜感激!

最佳答案

CASE count(post_id) 
  WHEN count(post_id)=1 THEN 'A'

您正在将 count(post_id)count(post_id)=1 进行比较,后者的结果是 true 或 false,在 MySQL 中等于 1 或 0。你想要

CASE 
  WHEN count(post_id)=1 THEN 'A'

相反。

关于mysql - CASE 语句中的 COUNT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44409362/

相关文章:

mysql - Wordpress:将主题恢复为默认设置

php - 如何从MySQL PHP数据库中回显一个未选择的值

mysql - 如何编写员工表和部门表的 SQL 查询

MySQL - 过滤两列中具有完全相同十进制值的行

mysql - 在 MySQL 中使用 SELECT 时过滤列值

php - MySQL:根据另一个表数据选择一个表(用于电子邮件)

php - substr 不适用于 utf8

mysql - 如何选择具有重复内容的行?

mysql - 按范围对 24 小时时间进行分组

mysql - 评估 MySQL 存储过程中的字符串