php - 在 1 个查询中选择/求和具有不同条件的列

标签 php mysql sql

$pos = select * from score_history where content_id = 6 && val = 1 
$neg = select * from score_history where content_id = 6 && val = -1  

我想在一次查询中获得 posneg 分数 但我不想使用连接

所以也许是某种 IF/case 语句?

我有这个但是你可以猜到它失败了

SELECT  count(*) as total , 
CASE 
    WHEN `val` =  1  THEN count(*) as `pos` 
    WHEN `val` = -1  THEN count(*) as `neg` 
END
FROM    score_history WHERE `content_id` = '46083' ";

有没有什么方法可以不使用连接或子查询来做到这一点?

最佳答案

您可以利用 MySQL 的灵 active 来处理 bool 值和整数:

SELECT  count(*) total, sum(val = 1) pos, sum(val = -1) neg
FROM    score_history 
WHERE   content_id = '46083';

只要条件为真,它就是 1。否则就是 0。不需要 CASE 或 GROUP BY。

关于php - 在 1 个查询中选择/求和具有不同条件的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18564485/

相关文章:

mysql - 仅显示下一条记录中具有相同值的第一列

sql - 大于或小于运算符和版本

PHP/MySQLi 使用准备好的语句返回不正确的浮点值

c# - 连接到 MS SQL 服务器时出错

php - 无法在数组元素中设置默认值 0

MySQL 等于 X 且大于 Y

php - php/mariadb 更新后禁止加载数据本地文件

php - Laravel 5.2 单元测试错误:BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::make()

php - 用于在 Wordpress 中访问 MySQL 数据库的 JavaScript + PHP

sql - 帮助加入查询