我对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
任何线索或帮助将不胜感激。
答案 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
答案 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中的外键,则必须小心。