Попробуйте этот подход
SELECT DISTINCT
u.user_login AS user_login,
u.user_email AS user_email,
u.user_registered AS user_registered,
f.meta_value AS first_name,
l.meta_value AS last_name,
t.expires_at AS membership_enddate
FROM
wp_acfzia_users AS u
LEFT JOIN
wp_acfzia_usermeta AS f
ON u.ID = f.user_id AND f.meta_key = 'first_name'
LEFT JOIN
wp_acfzia_usermeta AS l
ON u.ID = l.user_id AND l.meta_key = 'last_name'
LEFT JOIN
wp_acfzia_mepr_transactions AS t
ON u.ID = t.user_id
WHERE exists (
select 1 from tbl where tbl.user_id = t.user_id
having max(tbl.expires_at) = t.expires_at
)
или MySQL 8 +
select * from (
SELECT DISTINCT
u.user_login AS user_login,
u.user_email AS user_email,
u.user_registered AS user_registered,
f.meta_value AS first_name,
l.meta_value AS last_name,
t.expires_at AS membership_enddate,
row_number() over (order by t.expires_at partition by user_id) rn
FROM
wp_acfzia_users AS u
LEFT JOIN
wp_acfzia_usermeta AS f
ON u.ID = f.user_id AND f.meta_key = 'first_name'
LEFT JOIN
wp_acfzia_usermeta AS l
ON u.ID = l.user_id AND l.meta_key = 'last_name'
LEFT JOIN
wp_acfzia_mepr_transactions AS t
ON u.ID = t.user_id
)
Where rn = 1