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