多くの解決策があり、そのうちの1つは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で失敗する可能性のある任意の方法で、上記のクエリのようにgroupby句を自由に使用できることに注意してください。
alias
について混乱しているので、 、上記の例では、テーブル名はtest
です。 クエリ内では、疑似名はt1
として指定されます。 。また、自己結合を行う場合は、同じテーブルに一意のエイリアス名を付けることが重要です。上記の例では、同じテーブルがそれ自体と結合されているため、テーブルにエイリアス名を付ける必要があります。