我有一个这样的表sql
post_id point user_id
5 1.0 1
6 1.5 1
7 0.0 2
8 1.5 3
9 1.0 3
...
我想将数据打印到其中(按user_id将帖子分组)
user_id post_id(point) total point
1 5(1.0) | 6(1.5) | ... 2.5
2 7(0.0) | | ... 0.0
3 8(1.5) | 9(1.5) | ... 3.0
...
我尝试了类似的方法,但是它返回了数组
SELECT * FROM table WHERE post_id = ?
很抱歉,这是一个愚蠢的问题,但我是MySQL的新手。
答案 0 :(得分:2)
在GROUP BY
user_id
处运行查询。将GROUP_CONCAT()
与CONCAT()
一起使用以生成您的积分/帖子列。 CONCAT()
将字符串放在一起以形成postID (points)
格式,GROUP_CONCAT()
将所有按该组分组的值(在这种情况下为user_id
)放到一个由分隔符分隔的字符串中|
。
SELECT user_id,
GROUP_CONCAT(CONCAT(post_id, '(', points, ')') SEPARATOR ' | ') as point_id_posts,
SUM(points) as totalPoint
FROM table
GROUP BY user_id
答案 1 :(得分:1)
这是GROUP BY
和GROUP_CONCAT()
的工作。尝试这样的事情。
(https://www.db-fiddle.com/f/4sVVgGk6SyEnFE4C3emMp9/0)
SELECT user_id,
GROUP_CONCAT( CONCAT(post_id, '(', point, ')') ORDER BY post_id SEPARATOR ' | ' ),
SUM(point)
FROM tbl
GROUP BY user_id
答案 2 :(得分:1)
我认为这会对您有所帮助
cell.setBackgroundColor(BaseColor.GRAY);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setUseAscender(true);
答案 3 :(得分:0)
查询以实现您的要求
SELECT user_id,
GROUP_CONCAT( CONCAT(post_id, '(', point, ')') ORDER BY post_id SEPARATOR ' | ' ) as post_id_point,
SUM(point)
FROM tbl
GROUP BY user_id