我有两个表:SQL查询中使用GROUP_CONCAT()函数
1.Activity-- which stores all the activities from a user
2.User-- which stores all the registered users
我想获取所有的帖子和喜欢的所有职位在一个查询。一排是帖子或类似的由类型栏的值决定。
表名称 - 活动
| actId | parentId | type | postedby |
---------------------------------------------------
| 100 | NULL | post | 100 |
| 200 | 100 | like | 200 |
| 300 | 100 | like | 300 |
| 400 | 100 | like | 400 |
| 500 | NULL | post | 100 |
| 600 | 500 | like | 600 |
表名称 - 用户
| userId | name |
-------------------
| 100 | Amit |
| 200 | Alok |
| 300 | Arjun |
| 400 | Arpeet |
| 600 | Amaan |
输出应该
| actId | name | LikedBy |
------------------------------------------
| 100 | Amit | Alok, Arjun, Arpeet|
| 500 | Amit | Amaan |
注意 - 我不希望使用FOR XML PATH来实现此目的,因为它在我正在使用的SQLite中不受支持。
我查询的尝试是
SELECT a.id, u.name,
(select group_concat(u.name) from activity a, user u where a.id = u.id and a.type = 'like'
group by a.parent) as likedby
FROM activity a, user u
WHERE a.id = u.id and a.type = 'post'
我得到的结果是
| Id | name | LikedBy |
---------------------------------------
| 100 | Amit | Alok, Arjun, Arpeet|
你可以看到在另一排从结果失踪。
您需要哪种DBMS解决方案? – Jens
@Jens,我需要SQLite。但它可能不会很大,因为查询将几乎相同。 –
这是不正确的,GROUP_CONCAT()是一个mysql相关的函数,在SQL Server中它是一个递归的CTE(例如)。 – Pred