1

我有两张桌子

    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 和计数 = 1 的行,我需要在 table2 上求和(净 + 税)。我尝试使用 where 子句,但 numID 3 将被添加两次,但我只需要它求和一次。numID 4 应该被省略,因为它的 counts=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.

4

1 回答 1

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)
于 2012-05-11T00:12:43.647 回答