[英]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.