0
我運行此查詢獲得0結果時,我不應該
select *
from PortalUser
where ID not in (select distinct PortalUserID from LoginHistory where LoginDateTime > '10/1/2012')
並獲得0的結果。
如果我運行
select distinct PortalUserID
from LoginHistory
where LoginDateTime > '10/1/2012'
我得到預期的結果集。比方說50個結果
如果我運行
select *
from portalUser
我得到200個結果。
這是爲什麼?
只是要清楚。 LoginHistory表的PortalUserID不必是唯一的,但是PortalUser..ID是唯一的字段。
運行此查詢
select count(ID)
from PortalUser
GO
select count(Distinct PortalUserID)
from LoginHistory where LoginDateTime > '10/1/2012''
返回119個47行
您的結果強烈建議PortalUser中列出的每個人都有LoginTimeTime> 10/1/2012。您可以通過執行'select select count(*)from PortalUser'並將它與'從LoginHistory中選擇不同的PortalUserID進行比較,其中LoginDateTime> '10/1/2012' – StarPilot
我知道一個事實,即我有沒有登錄的用戶在過去的2個月裏。這是一個開發環境,其中一個用戶是一名2年前辭職的開發人員。他的上次登錄日期是2011年初的某個時間 –
嘗試使用NOT EXISTS而不是NOT IN。無論如何,這是一個更好的模式,但是如果PortalUserID可以爲空,它可能會拋棄結果。也停止使用不安全和不明確的日期時間格式。如果這被解釋爲1月10日而不是10月1日呢?使用YYYYMMDD僅限日期字符串文字。我懷疑它會解決這個具體問題,但這是一個更好的做法。 –