我在SQL上非常糟糕,并且在使用两个表的UNIQUE连接时遇到了一些麻烦.SQL结构有点糟糕,但我没有设计它.
我有两张桌子:
用户
uid,ufn,uln,ue
用户id = uid的位置.
和
交易
uid,unit,address,start_date
基本上在事务表中,每个uid有多个条目.我要做的是选择仅users.ufn, users.uln, users.ue, transactions.unit, transactions.address基于最新的start_date.意思是每个uid 只能获得一个结果.目前我正在获取表中所有 uid条目的返回.transactions
我尝试过使用MAX做一些JOINS,LEFT JOINS和其他东西,但基本上没有成功.
SELECT * FROM users JOIN ( SELECT unit, address, start_date FROM transactions GROUP BY uid) as a ON users.tenant_id = a.tenant_id
是我尝试过的其他东西.
任何关于正确方向的暗示都将非常受欢迎.谢谢!
这会让你接近.问题是如果2个事务对同一个用户具有相同的开始日期.但如果你没有这种情况,这应该可以正常工作.
select u.ufn,
u.uln,
u.ue,
t.unit,
t.address
from users u
inner join (
select uid,
max(start_date) as newest_start_date
from transactions
group by uid) x
on u.uid = x.uid
inner join transactions t
on t.start_Date = x.newest_start_date
and t.uid = u.uid
Run Code Online (Sandbox Code Playgroud)