I have query that is becoming very huge due to multiple UNION ALL can anyone help me reduce it. There are more than 300 UNION ALL actually.
SELECT keywords,
COUNT(i.postId) as Posts,
SUM(i.interactions) as Interactions,
GROUP_CONCAT(DISTINCT i.users) as Users
FROM (
SELECT 'keyword1' as keywords,
`postId`,
`interactions`,
( SELECT displayName FROM profile WHERE id=userID LIMIT 1 ) as users
FROM `posts`
WHERE `content` REGEXP 'keyword1'
AND created BETWEEN '2021-01-01' AND '2021-02-19'
AND userID IN (147483,166451,166467)
UNION ALL
SELECT 'keyword2' as keywords,
`postId`,
`interactions`,
( SELECT displayName FROM profile WHERE id=userID LIMIT 1 ) as users
FROM `posts`
WHERE `content` REGEXP 'keyword2'
AND created BETWEEN '2021-01-01' AND '2021-02-19'
AND userID IN (147483,166451,166467)
UNION ALL
SELECT 'keyword3' as keywords,
`postId`,
`interactions`,
( SELECT displayName FROM profile WHERE id=userID LIMIT 1 ) as users
FROM `posts`
WHERE `content` REGEXP 'keyword3'
AND created BETWEEN '2021-01-01' AND '2021-02-19'
AND userID IN (147483,166451,166467)
) i
GROUP BY keywords