我有兩個表: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