将两个表中的数据合并为一行

时间:2014-07-24 07:01:11

标签: sql join

我对SQL查询没有多少经验。我尝试使用INNER JOIN执行此操作,但结果是两行。但是我需要按照下面的定义获得一行。这是表格:

表1

ID | GP | NAME | T1
12 | 1| AAASAS  | 23

表2

ID |GP | k1
12 | 1|  600
12 | 1| 300

此处ID和GP在两个表中都是相同的字段。表1的主键是ID,但其他表没有任何PK。

预期结果

ID |GP | Name | T1| K1| K1
12 | 1 | AAASAS|23|600 | 300

任何线索或帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

假设Table1中的1行映射到Table2中的只有2行,请尝试:

select src.id, src.gp, src.name, src.t1, tgt.k1max, tgt.k1min 
from
Table1 src
inner join
(select id, gp, max(k1) k1max, min(k1) k1min
 from Table2
 group by id, gp) tgt
on src.id = tgt.id and src.gp = tgt.gp

Demo

答案 1 :(得分:0)

这不会在2个单独的专栏中发挥作用。你可以使用SUM()函数只获得一行,但是你得到的是k1值为900而不是两列中的600和300。

答案 2 :(得分:0)

你必须写

Select table1.id, table1.gp, table1.name, table1.t1, table2.k1, table2. k112 .... from table1, table2 where table1.id=table2.id;

如果table1中的主键是table2中的外键,则必须小心。