如何只显示一次数据库重复项?

时间:2019-01-14 09:00:16

标签: sql sqlite

我有一个包含多行的表,该表存储成员支付的所有贷款金额。

这是当前数据的来源

> =======================                                                                                                                           
> 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  |

有可能吗?

2 个答案:

答案 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):

https://www.db-fiddle.com/f/rnL91RcmS6QEE9eULwb4Uu/0