2016-12-01 48 views
0
SELECT 
    SUM(amount), (DISTINCT table1.id) 
FROM 
    table1 
INNER JOIN 
    table2 ON table1.id = table2.id IS NULL; 

Table1 id amount  Table2 id product 
     1  40     5  10 
     2 364.25     2  20 
     3  704.5     8  30 
     4  404.5     3  40 
     5  580.5     2  20 

该ID不是唯一的或主要的------------------第一我需要忽略来自table2的所有重复条目ID然后匹配table2到table1的id之后那些id将匹配我需要总金额数字金额是列名我不会计算单个数据将超过20000请帮助我if你可以DISTINCT基于ID之间的两个表和SUM中的另一个退出列在SQL中

首先比较匹配table2 id与table1 id如果发现任何id匹配那么这些id的数量需要是我的意思是总数。这里匹配id是2和3根据table2,然后我们将添加这个2和3 id的数量,所以结果将是364.25 + 704.5 = 1068.75我看结果如何使用mysql做到这一点。

我正在尝试DISTINCT基于两个表之间的ID和我们在table1中存在的其他现有列的SUM。有人可以帮我怎么做吗?

+1

请发布样本数据和您的预期输出。你在这里试图做什么并不完全清楚。 –

+2

哪个RDBMS是为了这个?请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。 –

+0

你能否更新你的问题添加一个适当的数据样本和预期的结果? – scaisEdge

回答

0

根据您的最新评论试试这个

SELECT 
    SUM(amount) 
FROM 
    table1 
INNER JOIN 
    (Select Distinct ID From table2) T2 ON table1.id = T2.id 
+0

这将是工作,但如果我使用这一个有一些问题,如果该ID不是主要或唯一的ID将在table2中的双id,因此我需要使用DISTINCT,双ID将被忽略。 –

+0

我明白了,我会更新我的答案。 –

+0

MySQL说:文档 #1054 - '字段列表'中的未知列'金额' –

0

从我的理解,你需要从两个表和量的相应总和的通用标识。

SELECT 
    SUM(amount) 
FROM 
    table1 
WHERE 
    id IN (SELECT id 
    FROM table2); 
+0

t1意思是我不是fam的t1有可能为我清楚你对t1的意思 –

+0

't1'是'table1'的别名。同样't2'是表'table2'的别名。它简化了查询写入操作,否则反复写入全表名称会变得麻烦。 – GurV

+0

这里我们需要将id忽略,然后表单2需要剩下的东西。 –

0

让离开的性能问题超出了本专题:)
所以根据这一点:

首先比较表1 ID匹配表2编号,如果发现任何ID匹配 然后将这些ID量需要为SUM我的意思是总

它可以使用相关子查询:

select sum(t1.amount) 
from table1 t1 
where exists (select 1 from table2 t2 where t2.id = t1.id) 
相关问题