php - 仅获取表中重复项的最小值

标签 php mysql sql pdo

我有以下 SQL:

set @arbitraryMin = 'two weeks ago';
set @myDesiredMinimumTime = 'thisMorning';

select distinct order, box from db.table 
where scantime >= @arbitraryMin
having min(scantime) >= @myDesiredMinimumTime

本质上,我们有一个系统,可以对不同的盒子/订单组合进行多次扫描。我只想获得最小扫描时间 >= @myDesiredMinimumTime 的那些。上面的查询返回两列,其中没有值。我可以使用子查询来完成此操作,但我想知道是否有一种方法可以在不使用子查询的情况下完成此操作。

我不是 SQL 专家,所以我感谢任何帮助。表格示例(格式抱歉):

扫描时间|订单|框

2017-06-29 12:34:56 | 123456 | 123

2107-06-29 12:12:12 | 123456 | 124

2017-06-28 14:50:00 | 123456 | 123

请注意第 1 行和第 3 行不同日期的两个重复的订单/盒子组合。如果我使用 @ ArbitaryMin = '2017-06-28 00:00:00' 和 @myDesiredMinimumTime = '2017-06- 输入查询29 00:00:00',我只想获取最后两行,因为顶部一行是在不同时间进行的重复扫描。

谢谢

最佳答案

这是一个无效的 SQL。如果没有 GROUP BY,则不能有 HAVING 子句。所以下面的行是错误的

having min(scantime) >= @myDesiredMinimumTime

您应该仅将该条件放在 WHERE 子句中

where scantime >= @arbitraryMin
and (select min(scantime) from db.table) >= @myDesiredMinimumTime

关于php - 仅获取表中重复项的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44848746/

相关文章:

javascript - 为什么 2.4 mod 0.8 返回 0.8

PHP - 未选择数据库。我的代码有什么问题吗?

php - 将 Node 与 MySql 一起使用或将 Node 与 PHP 一起使用(这将处理 MySql 操作)

sql - Postgres 上的差异字符串

php - php 模块选择什么模式?

php - 为什么将csv上传到mysql时,数据会改变顺序?

mysql - 如何交替排序选定的行

mysql - 如何使用 create-select 语句设置列类型

sql - rails/postgres 中的阈值求和

sql - 将数据从 MS SQL 导入 MySQL