Имате много решения и едно от тях е да използвате left join
и можете да проверите за това
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
Логиката е да направите ляво присъединяване със същата таблица, където типът е същият и цената е по-малка от другата и накрая да направите group by
разнообразието и след това използвайте count(), като трябва да покажете броя на записите, които искате за група. Имайте предвид, че в mysql имате свободата да имате група по клауза, както в горната заявка по произволен начин, който може да се провали в други RDBMS.
Сега, тъй като имате известно объркване относно alias
, в горния пример името на таблицата е test
и в рамките на заявката се дава псевдо име като t1
. Също така, когато правите самостоятелно присъединяване, важно е да давате уникални псевдоними за същата таблица. В примера по-горе същата таблица е свързана сама със себе си, така че трябва да се уверим, че сме дали псевдоним за таблиците.