Php 使用日期范围选择的MySQL查询,但当另一列有重复项时,还需要获取该列的最高值

Php 使用日期范围选择的MySQL查询,但当另一列有重复项时,还需要获取该列的最高值,php,mysql,sql,Php,Mysql,Sql,当我不尝试“IN”查询时,这个查询非常有效。查询需要从用户输入中选择两个日期变量之间的所有行,并且不等于。我的目标是,如果'item_number'列有重复项,我只需要获取最高的'id'行。这可能吗 以下是我正在尝试但无法解决的问题: SELECT item_number , description , style_number , prod_attribute_1 , prod_attribute_2 , prod_attribute_3

当我不尝试“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:

结果应为所有行,但仅在“项目编号”相同时选择最高的“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小提琴链接 谢谢。 我已经更新了我的答案。请查收。 希望这能解决你的问题。如果不让我知道,我会更新我的答案

    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小提琴链接

请参阅。另外,考虑您的模式是否被充分规范化。另外,考虑你的模式是否足够正规化。SqLFIDLE目前不在任何浏览器上为我工作。我为SqLFIDLE制作了一个链接,并把它放在我的问题上。Sop.SqLFIDLE目前不在任何浏览器上工作。我为SqLoFDLE制作了一个链接,并把它放在我的问题上面。