Du har många lösningar och en av dem är att använda left join
och du kan kontrollera det
select t1.* from test t1
left join test t2
on t1.type = t2.type and t1.price > t2.price
group by t1.variety
having count(*) <=1
order by t1.type,t1.price
Logiken är att göra en vänsterkoppling med samma tabell där typen är densamma och priset är lägre än den andra och slutligen göra en group by
varianten och använd sedan count() med att visa antalet poster du vill ha per grupp. Observera att i mysql har du en frihet att ha en grupp för klausul som i ovanstående fråga på ett godtyckligt sätt som kan misslyckas i andra RDBMS.
Nu när du har lite förvirring om alias
, i exemplet ovan är tabellnamnet test
och i frågan ges ett pseudonamn som t1
. Också när du gör en självanslutning är det viktigt att du ger unika aliasnamn för samma bord. I exemplet ovan är samma tabell förenad med sig själv så vi måste se till att vi ger tabellerna ett aliasnamn.