我有两张桌子

    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和counts = 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

最佳答案

尝试使用相关的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)

关于mysql - 选择从表中区分以对另一个表中的值求和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10543727/

10-13 06:44