php - 如何根据值将mysql中的行计入两个或多个变量?

标签 php mysql count

我想根据一个查询中的条件,将升级或标准用户计入 users['upgraded']users['standard'] 变量。我正在使用 mysql 和 PDO。 “id”是主键

像这样:

$user[upgraded] =

SELECT COUNT(*)
FROM users
AS upgraded
WHERE (status1 > 0 OR status2 > 0 OR status3 > 0)
AND upgraded = 1
AND paused = 0
AND timestamp < $timestamp
ORDER BY id DESC

$user[standard] =

SELECT COUNT(*)
FROM users
AS standard
WHERE (status1 > 0 OR status2 > 0 OR status3 > 0)
AND upgraded = 0
AND paused = 0
AND timestamp < $timestamp
ORDER BY id DESC

我如何在一个查询中得到这个?帮助将不胜感激!

最佳答案

MySQL bool 运算,我相信这是最短的可能答案

SELECT  SUM(upgraded = 1) upgraded,
        SUM(upgraded = 0) downgraded
FROM    users
WHERE   (status1 > 0 OR status2 > 0 OR status3 > 0) AND 
        paused = 0  AND 
        timestamp < $timestamp

但是如果你想要更友好的 RDBMS,请使用 CASE

SELECT  SUM(CASE WHEN upgraded = 1 THEN 1 ELSE 0 END) upgraded,
        SUM(CASE WHEN upgraded = 0 THEN 1 ELSE 0 END) downgraded
FROM    users
WHERE   (status1 > 0 OR status2 > 0 OR status3 > 0) AND 
        paused = 0  AND 
        timestamp < $timestamp

关于php - 如何根据值将mysql中的行计入两个或多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15640264/

相关文章:

mysql - SQL 不喜欢返回所有行而不是差异

mysql - 构建数据库

mysql - 摘要查询返回重复值 MySQL

mysql - 在 phpmyadmin 中上传数据库时出错

php - 要显示的设备特定内容

php - 如何在 Laravel 中删除具有相同列值的重复行?

mysql - 将列值/字段/行从一个表复制到另一个表

php - 错误 : Illegal String Offset in PHP

php - mysqli php 中的 now() 函数

php - MySQL 求和与连接