【发布时间】:2017-11-29 02:51:32
【问题描述】:
我正在研究一种算法,使用 SQL 和 JAVA,涉及大型数据集。 在 SQL 中,我有一个包含所有数据的表,我想在将其加载到 JAVA 之前尽可能多地使用 SQL 查询。
我生成随机数据集(在 Java 中),仅由 1 到 40001 之间的整数组成,然后将它们插入 MySQL 表中。 行可以有不同的长度,最多有 30 个项目/记录(这包括 ID)。所以通常列的数量是 30(所以 COL1,COL2,COL3,......COL30)但是这个数量在某些时候也会是随机的
我想要做的是计算表/数据集中每个不同项目的出现次数,并将它们的计数放入一个新表中。然而,这很棘手,因为我想在整个表格中计算它,而不仅仅是一列。我该怎么做?
指定:
以这张桌子为例(与我平时的桌子相比,这张桌子很小):
ID | COL1 | COL2 | COL3 | COL4 | COL5 |
---------------------------------------
1 | 8 | 35 | 42 | 12 | 27 |
2 | 22 | 42 | 35 | 8 | NULL |
3 | 18 | 22 | 8 | NULL | NULL |
4 | 42 | 12 | 27 | 35 | 8 |
5 | 18 | 27 | 12 | 22 | NULL |
我想从这张表中提取的是:
Item | Count
-------------
8 | 3
35 | 3
40 | 1
12 | 3
27 | 3
22 | 3
42 | 2
43 | 1
18 | 2
如果有帮助的话,一个项目也不能多次出现在同一行中。
谁能帮助我?或者它可以简单地不在 SQL 中完成吗?在性能方面,在 JAVA 中执行此操作会更好吗?
提前致谢!
【问题讨论】:
标签: java mysql sql count distinct