Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zeilen mit Nullwert nur ausgeben, wenn es nicht dieselbe Zeile mit einem Nicht-Nullwert gibt

Wenn Sie für jede ItemID die neueste erhalten möchten entsprechend dem Type Auswahl können Sie eine Unterabfrage durchführen, um zuerst den neuesten Preis zurückzugeben, und dann der ursprünglichen Tabelle beitreten, um ihn in der Endausgabe anzuzeigen. Unten sehen Sie die Beispielabfrage:

SELECT A.* 
FROM   ItemPrices A 
JOIN   ( SELECT itemid,
                TYPE,
                MAX(fromdate) AS mdt 
         FROM   ItemPrices 
         GROUP BY itemid,TYPE ) B
ON      A.itemid=B.itemid 
        AND A.type=B.type 
        AND A.fromdate=B.mdt
WHERE   A.type=1
ORDER BY A.itemid;

Sie können die Demo hier ansehen:https://www.db-fiddle.com/ f/7YCaiLYz9DE11wnijWEdi/3