mysql - 仅获取最近的 MySQL 事务
问题描述
我正在尝试从一个 WordPress 数据库导出一组用户信息以导入另一个数据库。但是,我无法弄清楚如何仅为用户导出最近的会员交易。以下查询导出每个用户的所有交易,但我只想要具有最新“t.expires_at”值的交易。我已经尝试了基于其他 StackOverflow 线程的各种子查询等,但无法完全弄清楚。
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
解决方案
试试这个方法
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
推荐阅读
- azure - 在 azure Devops 中从运行时传递参数时,Yaml 编译变量不起作用
- reactjs - 如果令牌在反应 js 中的任何时候过期,则登录并重定向
- amazon-web-services - EFS 有时会返回空文件
- artificial-intelligence - 强化学习:TD(0) 使用函数逼近
- powershell - 如何通过 Powershell 更新 SCCM 增强检测方法
- javascript - 我如何解决我在 Angular JS 中更新版本的问题?
- mapbox - 使用 mapboxId 作为 search_text 进行地理编码
- angular - 导航栏上的下拉菜单无法使用 ng add 安装方法在 bootstrap 5 上运行
- linux - Linux字符设备驱动和缓存一致
- python - 从 Cmd 上的 pyspark 脚本运行 ceja.jaro-winkler 算法时出错,因为“找不到 python”