gpt4 book ai didi

mysql - 从每个帐户的 JOIN 中选择具有 MIN DATETIME 值的 1 行

转载 作者:行者123 更新时间:2023-11-29 09:41:41 24 4
gpt4 key购买 nike

我需要选择最后拨号列中日期时间值最早的行

未调用条目的默认 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() 将放回默认值。

关于mysql - 从每个帐户的 JOIN 中选择具有 MIN DATETIME 值的 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56498735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com