sql server:从多个表中选择

kqhtkvqz  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(301)

表帐户:

+----+------+----------+
| ID | Nick | Dono_CID |
+----+------+----------+
|  2 | Bart |        3 |
+----+------+----------+

表登录:

+------------+------------+
| Jogador_ID | TS_Logou   |
+------------+------------+
|          2 | 1590116475 |
|          2 | 1590118258 |
+------------+------------+

简而言之,我打算确定是否有一行的ts\u logou小于1个月前的时间戳,并且如果dono\u cid!=-1
组织分解结构: Accounts.ID = Logins.Jogador_ID obs公司²: logins表中有多条记录。我想按说明顺序选择最后一个
我的尝试:

SELECT 
    ct.Nick, 
    ct.Dono_CID 
FROM 
    Contas AS ct 
INNER JOIN 
    Logins AS lg ON lg.Jogador_ID = ct.ID 
WHERE 
    ct.Dono_CID != -1 
    AND lg.TS_Logou < 1587524400 
GROUP BY 
    lg.Jogador_ID 
ORDER BY 
    lg.TS_Logou DESC 
LIMIT 1
dauxcl2d

dauxcl2d1#

从你的尝试中,我了解到t泷logou<1587524400,意味着超过一个月。我正在尝试选择满足筛选条件的最大ts\u logou登录名。

SELECT TOP 1 a.Id, a.Nick, a.Dono_CID
FROM Logins as l
Inner Join Account as a
a.Id = l.Jogador_Id 
WHERE a.Dono_CID <> -1 
AND a.TS_Logou < 1587524400
ORDER BY l.TS_Logou DESC
1rhkuytd

1rhkuytd2#

在hear中,我尝试为用户选择max ts\u logou form logins,并且该表与account表连接。这对我有用

SELECT 
 ac.Nick, 
 ac.Dono_CID 
FROM 
    Account AS ac 
INNER JOIN 
 (SELECT l.Jogador_ID,MAX(l.TS_Logou) FROM Logins AS l 
   WHERE DATE(l.TS_Logou) < DATEADD(month, -1, GETDATE()) 
   GROUP BY l.Jogador_ID) AS lg 
 ON lg.Jogador_ID = ac.ID 
WHERE 
 ac.Dono_CID <> -1

相关问题