0

次のようなテーブルがあります。

Name   DisplayID InventoryType Itemlevel RequiredLevel  
Armor1      4           4         566      90
Armor2      123         30        566      90
Armor3      123         30        540      90
Armor4      123         10        540      90

私がやりたいことは、DisplayId Duplicates From Each InventoryType を削除し、最高の Itemlevel のものを残すことです。

HeidiSQL、MySQL

4

3 に答える 3

0

基準に従って重複レコードを削除するには、次の手順を試してください。ただし、最上位の Itemlevel に重複がある場合は、それらすべてが出力に表示されることに注意してください。

DELETE Table1
  FROM Table1
     LEFT JOIN (SELECT DisplayID, InventoryType, MAX(Itemlevel) AS MaxItem
                  FROM Table1
                 GROUP BY DisplayID, InventoryType) AS Table2
     ON Table1.InventoryType = Table2.InventoryType
    AND Table1.DisplayID = Table2.DisplayID
    AND Table1.Itemlevel = Table2.MaxItem
 WHERE Table2.MaxItem IS NULL
于 2015-04-15T20:02:08.350 に答える
0
SELECT a.name, a.DisplayID, a.InventoryType, a.Itemlevel, a.RequiredLevel
FROM Item_template a
WHERE a.Itemlevel = (SELECT MAX(b.Itemlevel) FROM Item_template b where a.DisplayID = b.DisplayID)

SQL フィドル: http://sqlfiddle.com/#!9/bba95/1/0

于 2015-04-15T19:54:51.523 に答える