簡體   English   中英

SQL 服務器:來自多個表的 select

[英]SQL Server : select from multiple tables

帳戶

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

登錄

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

簡而言之,我打算確定是否有一行 TS_Logou 小於 1 個月前的 Timestamp,如果 Dono_CID != -1

OBS: Accounts.ID = Logins.Jogador_ID

OBS²:登錄表中有多條記錄。 我要 select 最后一個,按 DESC 順序

我的嘗試:

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

根據您的嘗試,我了解到 TS_Logou < 1587524400 表示超過一個月。 我正在嘗試 select 滿足過濾條件的最大 TS_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

在聽到,我嘗試 select max TS_Logou form Logins 為用戶和該表加入帳戶表。 這對我有用

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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM