Re: [SQL ] 求最新的密碼變更日期和活躍用戶

看板Database (資料庫)作者 (波比)時間2年前 (2022/03/27 21:22), 編輯推噓3(303)
留言6則, 2人參與, 2年前最新討論串2/2 (看更多)
以下SQL應該可以滿足你的需求 select TB_USER.id,max(TB_USERPWDHISTORY.createdat) from TB_USER left join TB_USERPWDHISTORY on TB_USER.id=TB_USERPWDHISTORY.id where TB_USER.status=1 group by TB_USER.id having max(TB_USERPWDHISTORY.createdat) < sysdate-90 createdat+90 > sysdate會有問題,為什麼有問題,你可以再想想 ※ 引述《ntpuisbest (阿龍)》之銘言: : (針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行) : 資料庫名稱: oracle : 資料庫版本:18.1.0 : 內容/問題描述: : 我有兩張表,以下是他們的table name還有對應的column : 1. TB_USER : id username email password status : 2. TB_USERPWDHISTORY : id userid password creatdate : 第二張表會記錄user 更改密碼的歷史,每次更動都會記錄進去 : 所以同一個userid可能會有多筆紀錄在第二章表中 : 並且第二張表的userid 是 foreign key : 我的商業邏輯如下, : 想要抓出 距離現在(sysdate)最近一次更改密碼的日期 : 超過90天都未更改 : 並且status=1 的用戶們 : 的user有誰,他們對應的 : username userid 以及 他們的email : 來寄信 : 我自己嘗試組過 : select userid,max(creatdat) from : TB_USERPWDHISTORY WHERE creatdat+90> sysdate : group by userid : 好像where 放錯位置 : 並且也沒有跟 user 去做leftjoin -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 182.234.37.8 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1648387366.A.CD4.html

03/27 22:14, 2年前 , 1F
我來想想喔
03/27 22:14, 1F

03/27 23:42, 2年前 , 2F
我的理解是要加上max才對,對嗎?
03/27 23:42, 2F

03/27 23:42, 2年前 , 3F
我這裡有個問題是如果要加上email的話,勢必要在group
03/27 23:42, 3F

03/27 23:42, 2年前 , 4F
by加上email,但是這樣結果可能就不對了?
03/27 23:42, 4F

03/28 06:19, 2年前 , 5F
提示:當createdat=今天,會發生什麼事?
03/28 06:19, 5F

03/28 08:58, 2年前 , 6F
懂了,等於今天+90就出問題了
03/28 08:58, 6F
文章代碼(AID): #1YG6KcpK (Database)
文章代碼(AID): #1YG6KcpK (Database)