Php 使用日期范围选择的MySQL查询,但当另一列有重复项时,还需要获取该列的最高值
当我不尝试“IN”查询时,这个查询非常有效。查询需要从用户输入中选择两个日期变量之间的所有行,并且不等于。我的目标是,如果'item_number'列有重复项,我只需要获取最高的'id'行。这可能吗 以下是我正在尝试但无法解决的问题: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
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制作了一个链接,并把它放在我的问题上面。