php - 具有日期范围选择的 MySQL 查询,但还需要在另一列重复时获取一列的最大值

标签 php mysql sql

当我不尝试“IN”查询时,我的这个查询效果很好。查询需要从用户输入中选择两个日期变量之间的所有行,并且不等于 ''。我的目标是,如果“item_number”列有重复项,我只需要获取最高的“id”行。这可能吗?

这是我正在尝试但无法正常工作的查询:

SELECT item_number
     , description
     , style_number
     , prod_attribute_1
     , prod_attribute_2
     , prod_attribute_3
     , prod_attribute_4
     , prod_attribute_5
     , date_of_entry
     , id 
  FROM import_items 
 WHERE date_of_entry between '$finalStart' and '$finalEnd' 
   AND TRIM(style_number) <> '') IN (SELECT item_number
                                          , MAX(id) 
                                       FROM import_items 
                                      GROUP 
                                         BY item_number);

这是我设置的 sqlFiddle: http://sqlfiddle.com/#!9/e6c36d/1

结果应该是所有行,但只有当 'item_number' 相同时才选择最高的 'id'。

最佳答案

谢谢。 我已经更新了我的答案。请检查。 希望这能解决您的问题。如果没有让我知道,我会更新我的答案。

    SELECT MAX(id), item_number, style_number, date_of_entry 
  FROM import_items 
  WHERE id IN 
          (SELECT id FROM import_items where (date_of_entry >= '12/07/2016' 
                                   AND date_of_entry<='12/11/2016') 
                                   AND TRIM(style_number) != '' ) 
  GROUP BY item_number;

SQL fiddle 链接 http://sqlfiddle.com/#!9/0303e/14

关于php - 具有日期范围选择的 MySQL 查询,但还需要在另一列重复时获取一列的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41187804/

相关文章:

java - 准备好的语句失败(带有错误消息!)

sql - 单元格中带有空格的 SQL Server 中的数据透视表

php - 验证多个文件输入mysql查询

mysql - MySQL 每小时一次结果

java - PHP SoapClient : Object passed is received as NULL in Java

mysql - 如何获得 TreeView ?数据库

MySQL:将列值转换为带有总计的标题

c# - 引用数据表 C# 更新 SQL 表的最佳方法

php - PyroCMS主题自定义导航结构

php - 变量数量与准备好的语句中的参数数量不匹配