SQL のことは全くわからないのですが、自分が言及されたトピックを表示するクエリは作れるでしょうか?ただし、言及された後に返信していないものに限って(この部分は難しいかもしれませんが、可能でしょうか)。
ユーザーが言及された後に返信していないトピック
-- [params]
-- user_id :user
WITH mentions AS (
SELECT target_topic_id, target_post_id, created_at
FROM user_actions
WHERE action_type = 7 -- 言及
AND user_id = :user
), replies AS (
SELECT topic_id, MAX(created_at) created_at
FROM posts
WHERE user_id = :user
AND deleted_at IS NULL
AND post_type IN (1, 4) -- 通常または囁き
GROUP BY topic_id
)
SELECT DATE(m.created_at) 言及日時, target_post_id 投稿 ID
FROM mentions m
LEFT JOIN replies r ON r.topic_id = m.target_topic_id
JOIN topics t ON t.id = m.target_topic_id
WHERE m.created_at > COALESCE(r.created_at, '1900-01-01')
AND t.deleted_at IS NULL
AND NOT t.archived
AND NOT t.closed
ORDER BY m.created_at DESC