[英]Select 1 Row With MIN DATETIME value from JOIN per account
我需要在lastdialed列中選擇日期時間值最舊的行
未撥打的條目的默認DATETIME是0001-01-01 00:00:00
當前,如果帳戶中有尚未撥入的條目和已撥入的條目,則它將選擇最早撥入的條目。
我已經在單個帳戶上運行了一個SELECT MIN(p.lastdialed)以驗證0001-01-01 00:00:00是最小值
應該抓住綠色的條目,當前抓住的是黃色
我嘗試使用HAVING子句和子查詢無濟於事
SELECT
d.id,
p.lastdialed
FROM dbase d
JOIN phonenumbers p
ON d.id = p.maindatabaseid
WHERE d.statusname IN ('X'
AND phonestatus NOT IN ('Y')
AND p.lastdialed = (SELECT MIN(p.lastdialed) FROM phonenumbers s WHERE s.maindatabaseid = d.id)
GROUP BY d.id
ORDER BY RAND();
預期的結果是,每個ID都擁有一個具有MIN lastdialed DATETIME值的條目
我認為這可以滿足您的需求:
WHERE d.statusname IN ('X') AND
phonestatus NOT IN ('Y') AND
p.lastdialed = (SELECT COALESCE(MIN(s.lastdialed), '0001-01-01 00:00:00')
FROM phonenumbers s
WHERE s.maindatabaseid = d.id AND
s.lastdialed <> '0001-01-01 00:00:00'
);
子查詢為外部查詢中的每個組計算lastdialed
的最小值。
計算將查看沒有默認值的匹配電話號碼記錄,並取其中的最小值。 如果不存在,則COALESCE()
將默認值放回去。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.