データが同じ構造のままであると仮定して、最初と2番目の要件を解決するクエリ部分のみを共有しています。クエリに結合やその他の必要な詳細を追加できます。
SELECT
myView.*,
CONCAT(REPLACE(REPLACE(group_concat(SUBSTRING(notification_message,9)),'</strong>',''),SUBSTRING_INDEX(notification_message,'>',-1),''), SUBSTRING_INDEX(notification_message,'>',-1)) AS Message
FROM
(SELECT DISTINCT
receiver_id,
notification_issuer,
notification_message,
notification_target,
notification_type
FROM imgzer_notifications
WHERE receiver_id = 9 and notification_seen = 1
ORDER BY notification_time DESC) myView
GROUP BY myView.receiver_id, myView.notification_target, myView.notification_type;
文字列関数は複雑に見えることは知っていますが、必要な出力に到達するには、生成された文字列を試してみる必要がありました。 SQL Fiddleのデータセットを少し変更して、出力を確認しました。次の場所でも同じことができます:
http://www.sqlfiddle.com/#!2/70a937/49
満たすべき他の基準や、クエリで必要な拡張機能がある場合は、お知らせください。