簡體   English   中英

將日期與子查詢進行比較

[英]Comparing Dates to a subquery

我有2張桌子,像這樣:

USER
ID_____LastLogin
1------2013-12-19
2------2013-11-12
3------2013-09-14
4------2013-07-18
5------2013-06-13

OTHER
ID_____UserID___TimeStamp
1------1--------2013-12-17
2------2--------2013-10-11
3------3--------2013-05-14
4------4--------2013-02-18

如果他們在該“其他”表中,則我試圖獲取自其“其他時間戳記”開始90天后登錄的用戶數。

所需結果:

2

所需結果說明:

UserID of '1' LastLogin is not greater than Other.TimeStamp (excluded in count)
UserID of '2' LastLogin is not greater than Other.TimeStamp (excluded in count)
UserID of '3' LastLogin is greater than Other.TimeStamp (included in count)
UserID of '4' LastLogin is greater than Other.TimeStamp (included in count)
UserID of '5' is not in Other table (excluded in count)

我試過了:

SELECT COUNT(DISTINCT(user.ID))
FROM user INNER JOIN other ON other.UserID = User.ID
WHERE DATE(user.LastLogin) >= (
    SELECT (DATE(other.TimeStamp) + INTERVAL 90 DAY)
    FROM other
    GROUP BY other.UserID)

我收到一條錯誤消息:

"Subquery returns more than 1 row"

我理解為什么會顯示錯誤(我無法將計數與子查詢的多行次數進行比較),盡管我正在嘗試將THOSE用戶的計數進行比較.LastLogin與該用戶的其他用戶的計數。

為什么子查詢呢?

SELECT COUNT(*)
FROM   user JOIN other ON other.UserID = user.ID
WHERE  user.LastLogin >= other.TimeStamp + INTERVAL 90 DAY

SQLFiddle

您可以使用DATEDIFF()函數:

SELECT COUNT(*)
FROM user 
INNER JOIN other ON other.UserID = User.ID
WHERE DATEDIFF(user.Lastlogin,other.TimeStamp)>90

暫無
暫無

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

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