2016-12-16 50 views
1

我有這個查詢,當我不嘗試'IN'查詢時效果很好。查詢需要從用戶輸入中選擇兩個日期變量之間的所有行,也不能等於''。我的目標是,如果'item_number'列有重複我只需要抓住最高'ID'行。這可能嗎?有日期範圍選擇的MySQL查詢,但當另一列有重複時,也需要獲取一列的最高值。

這裏是我的查詢我努力但不工作:

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'是相同的。

+0

見http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-我將要-A-極簡單的SQL查詢。另外,請考慮您的模式是否已充分標準化。 – Strawberry

回答

0

謝謝。 我已經更新了我的答案。請檢查。 希望這能解決你的問題。如果不讓我知道,我會更新我的答案。

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小提琴鏈接 http://sqlfiddle.com/#!9/0303e/14

+0

sqlfiddle目前不適用於任何瀏覽器。 –

+0

我爲一個sqlfiddle做了一個鏈接,並把它放在我的問題頂部。 –

+0

我更新了我的答案,請檢查。 http://sqlfiddle.com/#!9/0303e/14 –

相關問題