在简单的SQL JOIN中苦苦挣扎

tr3*_*ine 1 mysql sql join

我在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

是我尝试过的其他东西.

任何关于正确方向的暗示都将非常受欢迎.谢谢!

Bil*_*egg 7

这会让你接近.问题是如果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)