计算数据库中多个字段等于不同值的行数

时间:2013-09-22 09:02:57

标签: php mysql sql

图书

subject  |  userid  |  flag
---------+----------+--------
math     |  abc     |  0
math     |  abc     |  0
english  |  xyz     |  0

我想搜索 数学 主题的数量,其中 userid flag = 0

我应该如何编写SQL语句?

我尝试了COUNT(subject) AS math FROM books WHERE userid = 'abc' AND flag = '0';

它不起作用。

2 个答案:

答案 0 :(得分:2)

如果您只想使用math获取userid = 'abc' AND flag = '0'主题,可以使用以下查询:

SELECT COUNT(subject) AS math 
FROM books WHERE userid = 'abc' AND flag = '0' AND subject = 'math';

查看SQLFiddle

否则,如果您只想要userid = 'abc' AND flag = '0'的主题,则您提供的query完全是这样做的:

SELECT COUNT(subject) AS math 
FROM books WHERE userid = 'abc' AND flag = '0';

查看SQLFiddle

要使用phpmysql_fetch_assoc中显示,您可以指定列名来访问以下值:

$sql = "SELECT COUNT(subject) AS math 
    FROM books WHERE userid = 'abc' AND flag = '0'";

$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No math subjects exist";
    exit;
}
while ($row = mysql_fetch_assoc($result)) {
    echo $row["math"];
}

答案 1 :(得分:0)

也许这个:

SELECT COUNT(subject) AS math
FROM books 
WHERE flag = '0'
GROUP BY userid
HAVING userid = 'abc';