MySQL - 组合2个计数,除非两者都存在值

时间:2013-09-26 14:25:57

标签: mysql sql linqpad

我在1个表中有2列,我需要将每个列的COUNT()组合在一起。但是,如果两列都有值,那么该行只需要计算一次。

这是我尝试但不起作用的地方:

SELECT SUM( IF (table1.col1 IS NOT NULL OR table1.col2 IS NOT NULL, 1, 0) )
FROM table1 INNER JOIN table2 ON table2.col1 = table1.id
    INNER JOIN table3 ON table3.id = table2.personid
WHERE table3.otherid = 1 
    AND table1.col1 > '2000-01-01';*


Sample Data:
Table 1
Col1......Col2
04/17/2013........04/17/2013
null..........04/17/2013
03/26/2013.......02/17/2013
03/25/2013.........null
null.........null
02/22/2013...........02/21/2013

结果应为= 5.因为5条记录在任一列中至少有1个日期,但两列中包含日期的记录只计算一次

1 个答案:

答案 0 :(得分:0)

想出来。

SELECT COUNT(*)
FROM table1 INNER JOIN table2 ON table2.col1 = table1.id
    INNER JOIN table2 ON table3.id = table2.personid
WHERE table3.otherid = 1 
    AND (table1.col1 > '2000-01-01' OR table1.col2 > '2000-01-01');