Mysql 如何在连接后合并行,其中第一列重复,但其他列中的信息不同
在合并两个sql表的数据后,结果输出到HTML表的方式有问题 表1如下所示Mysql 如何在连接后合并行,其中第一列重复,但其他列中的信息不同,mysql,Mysql,在合并两个sql表的数据后,结果输出到HTML表的方式有问题 表1如下所示 +-------------+------------+---------+ | StationName | Address | Manager | +-------------+------------+---------+ | Station1 | London | John | | Station2 | Liverpool | Phil | | Station3 | M
+-------------+------------+---------+
| 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的问题是,它只显示每行的一列结果。只有一个分数栏并不是真正的解决方案;为了解释我的问题,我简化了这个。最终,我需要能够从不同的表中提取大量其他数据,并将其显示在每个站点名称旁边的一行中。我最终做到了这一点,但效果很好。谢谢,我终于到了,但这很有效。非常感谢。