我有一个包含多行的表,该表存储成员支付的所有贷款金额。
这是当前数据的来源
> =======================
> col1 | col2 | col3
> A | 100 |somedate |
> A | 200 |somedate |
> A | 300 |somedate |
> A | 200 |somedate |
> B | 100 |somedate |
> B | 17 |somedate |
> B | 54 |somedate |
> B | 100 |somedate |
> B | 100 |somedate |
我想要
> =======================
> col1 | col2 | col3
> A | 100 |somedate |
> | 200 |somedate |
> | 300 |somedate |
> | 200 |somedate |
> B | 100 |somedate |
> | 17 |somedate |
> | 54 |somedate |
> | 100 |somedate |
> | 100 |somedate |
有可能吗?
答案 0 :(得分:0)
如果您的问题是关于如何存储数据的,那么答案是:不,不可能。原因是您需要确定数据属于哪一行。
例如:您要查询所有100的'B'。查询看起来像:select col1, col2, col3 from mytable where col2 = 100 and col1 = 'B'
在传入数据结构上,您的结果将是三行。在您想要的结构上,它将是一行。
在屏幕上显示数据的方式与之不同,因为您将使用传入的数据结构,并且仅在col1更改时显示其值。
答案 1 :(得分:0)
欢迎乘坐
由于您只想显示数据,因此可能在每行中都有一个代码:“如果当前col1与以前的col1相同,则不显示它”就足够了。
但是,如果您想正确使用数据,我会建议使用更多数据库驱动的答案,其中同一col的所有数据都放在一个单元格中,然后将它们视为数组(用逗号分隔): / p>
SELECT col1, GROUP_CONCAT(col2), GROUP_CONCAT(col3)
FROM stack_54178316
GROUP BY col1
| col1 | GROUP_CONCAT(col2) | GROUP_CONCAT(col3) |
| ---- | ------------------ | -------------------------------------------- |
| A | 100,200,300,200 | somedate,somedate,somedate,somedate |
| B | 100,17,57,100,100 | somedate,somedate,somedate,somedate,somedate |
您可以在这里看到结果(只需按PLAY):