Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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
Mysql 如何在连接后合并行,其中第一列重复,但其他列中的信息不同_Mysql - Fatal编程技术网

Mysql 如何在连接后合并行,其中第一列重复,但其他列中的信息不同

Mysql 如何在连接后合并行,其中第一列重复,但其他列中的信息不同,mysql,Mysql,在合并两个sql表的数据后,结果输出到HTML表的方式有问题 表1如下所示 +-------------+------------+---------+ | StationName | Address | Manager | +-------------+------------+---------+ | Station1 | London | John | | Station2 | Liverpool | Phil | | Station3 | M

在合并两个sql表的数据后,结果输出到HTML表的方式有问题

表1如下所示

+-------------+------------+---------+
| StationName |  Address   | Manager |
+-------------+------------+---------+
| Station1    | London     | John    |
| Station2    | Liverpool  | Phil    |
| Station3    | Manchester | Mike    |
+-------------+------------+---------+
+-------------+--------+--------+--------+
| StationName | Score1 | Score2 | Score3 |
+-------------+--------+--------+--------+
| Station1    | Pass   |        |        |
| Station1    |        | Fail   |        |
| Station1    |        |        | Pass   |
| Station2    | Fail   |        |        |
| Station2    |        | Pass   |        |
| Station2    |        |        | Pass   |
| Station3    | Pass   |        |        |
| Station3    |        | Pass   |        |
| Station3    |        |        | Pass   |
+-------------+--------+--------+--------+
表2如下

+-------------+------------+---------+
| StationName |  Address   | Manager |
+-------------+------------+---------+
| Station1    | London     | John    |
| Station2    | Liverpool  | Phil    |
| Station3    | Manchester | Mike    |
+-------------+------------+---------+
+-------------+--------+--------+--------+
| StationName | Score1 | Score2 | Score3 |
+-------------+--------+--------+--------+
| Station1    | Pass   |        |        |
| Station1    |        | Fail   |        |
| Station1    |        |        | Pass   |
| Station2    | Fail   |        |        |
| Station2    |        | Pass   |        |
| Station2    |        |        | Pass   |
| Station3    | Pass   |        |        |
| Station3    |        | Pass   |        |
| Station3    |        |        | Pass   |
+-------------+--------+--------+--------+
我希望合并后的数据输出如下表所示

+-------------+------------+---------+--------+--------+--------+
| StationName |  Address   | Manager | Score1 | Score2 | Score3 |
+-------------+------------+---------+--------+--------+--------+
| Station1    | London     | John    | Pass   | Fail   | Pass   |
| Station2    | Liverpool  | Phil    | Fail   | Pass   | Pass   |
| Station3    | Manchester | Mike    | Pass   | Pass   | Pass   |
+-------------+------------+---------+--------+--------+--------+
但是它看起来是这样的

+-------------+------------+---------+--------+--------+--------+
| StationName |  Address   | Manager | Score1 | Score2 | Score3 |
+-------------+------------+---------+--------+--------+--------+
| Station1    | London     | John    | Pass   |        |        |
| Station1    | London     | John    |        | Fail   |        |
| Station1    | London     | John    |        |        | Pass   |
| Station2    | Liverpool  | Phil    | Fail   |        |        |
| Station2    | Liverpool  | Phil    |        | Pass   |        |
| Station2    | Liverpool  | Phil    |        |        | Pass   |
| Station3    | Manchester | Mike    | Pass   |        |        |
| Station3    | Manchester | Mike    |        | Pass   |        |
| Station3    | Manchester | Mike    |        |        | Pass   |
+-------------+------------+---------+--------+--------+--------+
我的问题是:

SELECT * 
FROM table1 
LEFT JOIN table2 
ON table1.stationName = table2.stationName
我想我正在寻找一种使用类似GROUPBY的方法,但不使用它来聚合数据

有人建议使用pivot表,尽管从我读到的这些表来看,它们对计算很有用——我感兴趣的是将文本数据合并到多个表的列中,其中公共链接是站点名称


有谁能就如何实现这一目标提出建议吗?

一个小组是最好的选择。试试这个:

SELECT stationname, address, manager,
MIN(score1) as score1,
MIN(score2) as score2,
MIN(score3) as score3
FROM table1 
LEFT JOIN table2 
ON table1.stationName = table2.stationName
GROUP BY stationname, address, manager

要走的路是一群人。试试这个:

SELECT stationname, address, manager,
MIN(score1) as score1,
MIN(score2) as score2,
MIN(score3) as score3
FROM table1 
LEFT JOIN table2 
ON table1.stationName = table2.stationName
GROUP BY stationname, address, manager

kbball的回答可能会解决您的问题。然而,良好的数据库设计消除了许多问题,可以使编码变得非常简单


我认为你需要重新设计数据。表2可能只有一个分数列,然后是另一列,告诉您每行的分数是多少。如果保留了三个分数列,则填充该表的代码应将所有三个分数放在同一行。

kbball的答案可能会解决您的问题。然而,良好的数据库设计消除了许多问题,可以使编码变得非常简单


我认为你需要重新设计数据。表2可能只有一个分数列,然后是另一列,告诉您每行的分数是多少。如果保留三个分数列,填充该表的代码应将所有三个分数放在同一行。

我发现GROUP BY的问题是,它只显示每行的一个列结果。只有一个分数栏并不是真正的解决方案;为了解释我的问题,我简化了这个。最终,我需要能够从不同的表中提取大量其他数据,并将其显示在每个站点名称旁边的一行中。我发现GROUP BY的问题是,它只显示每行的一列结果。只有一个分数栏并不是真正的解决方案;为了解释我的问题,我简化了这个。最终,我需要能够从不同的表中提取大量其他数据,并将其显示在每个站点名称旁边的一行中。我最终做到了这一点,但效果很好。谢谢,我终于到了,但这很有效。非常感谢。