从表中选择Distinct以在另一个表上求和值

时间:2012-05-11 00:01:48

标签: mysql

我有两张桌子

    table1                   table2
    numID|counts|date        numID|net|tax|date
    1        1   xy            1    2   1   xy
    2        1   xy            2    2   1   xy
    3        1   xy            3    2   1   xy
    3        1   xy            4    1   1   xy
    4        0   xy    

因此,对于具有相同日期,numID和count = 1的行,我需要对table2求和(net + tax)。 我试着做where子句但是numID 3会被添加两次,但我需要它只加一次。应省略numID 4,因为它具有count = 0。 我的选择:

SELECT 
    SUM(`net`+`tax`) 
FROM table1 AS d, `table2` AS c
WHERE d.date=c.date
    AND d.numID=c.numID
    AND `it_counts` = 1

这会两次添加numID 3,但应该是DISTINCT

1 个答案:

答案 0 :(得分:0)

尝试使用相关的exists查询重写此语句:

SELECT
    SUM(`net`+`tax`) 
FROM `table2` AS c
WHERE EXISTS (
    SELECT 1 FROM table1 AS d
    WHERE d.date=c.date
        AND d.numID=c.numID
        AND `it_counts` = 1)