在一行中返回SQL查询,使用PHP获取

时间:2014-07-01 19:18:43

标签: php mysql sql mysqli

使用我的SQL查询,我想要计算某列中的所有不同值。这很好用:

SELECT ans, COUNT(*) AS ans_num
FROM table_123
GROUP BY ans;

如果表中有三个不同的值,则返回(取决于多少个不同的值)这样的事情:

+------+---------+
| ans  | ans_num |
+------+---------+
| 0    |      15 |
| 1    |       2 |
| 3    |      11 |
+------+---------+

我使用mysqli_fetch_array在PHP中返回查询值,但我必须遍历每一行才能获得所有结果。

问题:

如何编写一个SQL查询来返回一个数组中的所有不同值(关联),所以我只需要mysqli_fetch_array一次?

澄清:

我想知道在查询中是否有一种方法可以将查询结果作为单行返回,而不是使用PHP获取所有行

2 个答案:

答案 0 :(得分:0)

你需要这个吗? http://www.php.net/manual/en/mysqli-result.fetch-all.php 或者我理解你错了?

答案 1 :(得分:0)

我认为这只有在" ans"有确定数量的值时才有可能。在这种情况下,这样的事情应该有用。

    SELECT SUM(Zero) "0", Sum(One) "1", Sum(Two) "2", Sum(Three) "3" FROM
        (SELECT IF(ans=0, 1, 0) Zero, IF(ans=1, 1, 0) One, IF(ans=2, 1, 0) Two, IF(ans=3, 1, 0) Three
        FROM table_123) TEMP;

这应该会得到这样的结果:

    +---+----+----+----+
    | 0 |  1 |  2 |  3 |
    +---+----+----+----+
    | 15|   2|   0|  11|
    +---+----+----+----+

如果此方法的可能值数量太大,您可能需要查看数据透视表。如果可能值的数量不确定,我不确定如何影响您的请求。