以下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