$pos = select * from score_history where content_id = 6 && val = 1
$neg = select * from score_history where content_id = 6 && val = -1
我想在一次查询中获得 pos
和 neg
分数
但我不想使用连接
所以也许是某种 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/