PostgreSQL指定用户ID查询交易并显示收发双方姓名如何实现?
PostgreSQL 查询指定用户关联交易及双方用户名方案
前提表结构约定
先明确两张表的核心字段(如果你的字段名不同,对应替换即可):
users表:主键为user_id,存储用户名字段为first_nametransactions表:sender_id(发送方ID,关联users.user_id)、receiver_id(接收方ID,关联users.user_id)、amount(交易金额)、transaction_date(交易日期)
核心解决逻辑
需要两次关联users表,分别给发送方、接收方的用户表设置不同别名,即可同时取出双方的名字,再过滤指定用户参与的交易即可。
可直接运行的SQL代码
SELECT t.transaction_id, t.sender_id, u_sender.first_name AS sender_first_name, t.receiver_id, u_receiver.first_name AS receiver_first_name, t.amount, t.transaction_date, -- 可选:追加字段标识当前用户是转出还是转入 CASE WHEN t.sender_id = {n} THEN '转出' ELSE '转入' END AS transaction_type FROM transactions t -- 关联发送方用户信息 JOIN users u_sender ON t.sender_id = u_sender.user_id -- 关联接收方用户信息 JOIN users u_receiver ON t.receiver_id = u_receiver.user_id -- 过滤指定用户ID n 参与的所有交易 WHERE t.sender_id = {n} OR t.receiver_id = {n} ORDER BY t.transaction_date DESC;
将上述SQL中的{n}替换为你要查询的目标用户ID即可。
内容的提问来源于stack exchange,提问作者MinaMaherNicola
相关产品推荐
相关产品推荐

