Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将两个表中的数据合并到一行中_Sql_Join - Fatal编程技术网

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

Sql 将两个表中的数据合并到一行中,sql,join,Sql,Join,我对SQL查询没有太多经验。我尝试使用内部联接来实现这一点,但结果是产生了两行。但是我需要得到下面定义的一行。以下是表格: 表1 ID | GP | NAME | T1 12 | 1| AAASAS | 23 表2 ID |GP | k1 12 | 1| 600 12 | 1| 300 这里ID和GP是两个表中的相同字段。表1的主键是ID,但其他表没有任何主键 预期结果 ID |GP | Name | T1| K1| K1 12 | 1 | AAASAS|23|600 | 300 任何

我对SQL查询没有太多经验。我尝试使用内部联接来实现这一点,但结果是产生了两行。但是我需要得到下面定义的一行。以下是表格:

表1

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

ID |GP | k1
12 | 1|  600
12 | 1| 300
这里ID和GP是两个表中的相同字段。表1的主键是ID,但其他表没有任何主键

预期结果

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

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

这在两个单独的列中不起作用。您可以使用SUM()函数仅获取一行,但k1值将获得900,而不是两列中的600和300。

假设表1中的1行映射到表2中的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
你只需要写

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

如果表1中的主键是表2中的外键,您只需小心。

表1中的一行是否总是映射到表2中的两行?如果表2中有两条以上的记录,会发生什么@shree.pat18否。表1中的1行不会映射到其他表中的2行。从表2映射的行可能多于两行,或者有时可能没有与表1匹配的行。感谢您的支持。但表2中可能有两行以上的行,有时可能没有。因此,不能使用最小值和最大值。您知道如何解决此问题吗?