gpt4 book ai didi

MySQL如何在最小值和最大值之间选择一条日期记录

转载 作者:行者123 更新时间:2023-11-30 21:46:15 24 4
gpt4 key购买 nike

假设我有四个日期,例如:

  • 2018 年 1 月 1 日
  • 2/5/2018
  • 2018 年 4 月 8 日
  • 2018 年 9 月 9 日

我想“选择”一个介于最小值和最大值之间的日期。仅 2/5/2018 记录或 4/8/2018 记录。

我想我很接近,但这个查询返回所有行:

SELECT * FROM RUBERIC R  
WHERE R.SCHOOLID = 75
AND R.TEACHERID = 610
AND R.OBSERVED = 'Observed Classroom'
AND R.DATE BETWEEN
(SELECT MIN(DATE) FROM RUBERIC WHERE R.SCHOOLID = 75
AND R.TEACHERID = 610 AND R.OBSERVED = 'Observed Classroom' )
AND
(SELECT MAX(DATE) FROM RUBERIC WHERE R.SCHOOLID = 75
AND R.TEACHERID = 610 AND R.OBSERVED = 'Observed Classroom' )

最佳答案

BETWEEN 包括结束点。据推测,您想排除它们:

SELECT R.*
FROM RUBERIC R
WHERE R.SCHOOLID = 75 AND
R.OBSERVED = 'Observed Classroom' AND
R.DATE > (SELECT MIN(R2.DATE) FROM RUBERIC R2 WHERE R2.SCHOOLID = 75
AND R2.TEACHERID = 610 AND R2.OBSERVED = 'Observed Classroom'
) AND
R.DATE < (SELECT MAX(R2.DATE) FROM RUBERIC R2 WHERE R2.SCHOOLID = 75
AND R2.TEACHERID = 610 AND R2.OBSERVED = 'Observed Classroom'
);

此外,您的查询无意中是一个相关的子查询。表别名 R 引用主查询中的行,而不是子查询中的行。您应该始终定义表别名并始终使用它们,但要正确使用它们。 (注意此版本子查询中的所有 R2。)

一般来说,我强烈反对任何人将 BETWEEN 与日期或日期/时间一起使用。这在您的情况下不是问题,但时间组件可能会导致意外结果。

关于MySQL如何在最小值和最大值之间选择一条日期记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49335663/

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