看板 Database 關於我們 聯絡資訊
以下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
ntpuisbest: 我來想想喔 03/27 22:14
ntpuisbest: 我的理解是要加上max才對,對嗎? 03/27 23:42
ntpuisbest: 我這裡有個問題是如果要加上email的話,勢必要在group 03/27 23:42
ntpuisbest: by加上email,但是這樣結果可能就不對了? 03/27 23:42
smlboby: 提示:當createdat=今天,會發生什麼事? 03/28 06:19
ntpuisbest: 懂了,等於今天+90就出問題了 03/28 08:58