我可以在一个Mysql查询中执行此操作吗?

时间:2010-04-02 22:09:40

标签: php mysql

我有一个包含两列的表格:

column A    column B
  1             2
  1             2 
  2             1

我想要返回总数= 3总共twos = 3

我能想到的最好的是两个查询:

SELECT sum(CASE WHEN columnA =1 THEN 1 ELSE 0  END ) 
     + sum(CASE WHEN columnB =1 THEN 1 ELSE 0 END ) 

SELECT sum(CASE WHEN columnA =2 THEN 1 ELSE 0  END ) 
     + sum(CASE WHEN columnB =2 THEN 1 ELSE 0 END ) 

这可以在一个查询中完成吗? 谢谢

5 个答案:

答案 0 :(得分:2)

您没有指定是要将其作为2行还是2行连接。

两行有点明显(只是将每列中的所有值联合在一起,并且按照联合的结果将count(1)逐个值组合;所以我假设你想要做一行。

如果你只有1或2,那很简单:

SELECT SUM(A+B-2) 'twos', SUM(4-A-B) 'ones' FROM myTable

答案 1 :(得分:1)

SELECT SUM(IF(columnA=1, 1, 0) + IF(columnB=1, 1, 0)) as ones,
    SUM(IF(columnA=2, 1, 0) + IF(columnB=2, 1, 0)) as twos
FROM myTable;

下进行。

答案 2 :(得分:0)

要在一个查询中获取所有内容,我会尝试这样的事情。

SELECT Result.Val, COUNT(Result.Val) AS Count
FROM (
    SELECT ColumnA AS Val
    FROM TableName

    UNION

    SELECT ColumnB AS Val
    FROM TableName
) AS Result
GROUP BY Result.Val

答案 3 :(得分:-1)

一般来说,你会计算这样的事情:

SELECT columnA, COUNT(*) FROM myTable
GROUP BY columnA

获取columnA中所有不同值的计数。

答案 4 :(得分:-1)

SELECT COUNT(*) FROM table WHERE columnA=1 or columnB=1