MySQL - 如何更好地做到这一点?

And*_*rew 5 php mysql sql

$activeQuery = mysql_query("SELECT count(`status`) AS `active` FROM `assignments` WHERE `user` = $user_id AND `status` = 0");
$active = mysql_fetch_assoc($activeQuery);

$failedQuery = mysql_query("SELECT count(`status`) AS `failed` FROM `assignments` WHERE `user` = $user_id AND `status` = 1");
$failed = mysql_fetch_assoc($failedQuery);

$completedQuery = mysql_query("SELECT count(`status`) AS `completed` FROM `assignments` WHERE `user` = $user_id AND `status` = 2");
$completed = mysql_fetch_assoc($completedQuery);
Run Code Online (Sandbox Code Playgroud)

必须有更好的方法来做到这一点,对吧?我不知道我需要详细说明,因为你可以看到我正在尝试做什么,但有没有办法在一个查询中完成所有这些?我需要能够输出活动,失败和完成的分配,最好是在一个查询中.

Adr*_*der 10

您可以尝试这样的查询

SELECT Status , COUNT(*) StatusCount 
FROM assignments
WHERE Status IN (0, 1, 2)
AND User = $user_id 
GROUP BY Status
Run Code Online (Sandbox Code Playgroud)