MySQLなどで、データを価格順や年齢順に並べるのはもちろん簡単にできるのですが、次のような students というテーブルがあった際に class カラムを基準にして 松組 > 竹組 > 梅組 の順で並べるにはどうしたらよいでしょうか。

以前は case 文を使ったりしててしんどい思いをしてたのですが、最近、FIELD という関数を知りました。
https://dev.mysql.com/doc/refman/5.6/ja/string-functions.html#function_field
この関数は下記のような使い方をします。
FIELD(str, str1, str2, str3・・・)
これは str と同じ内容のものが str1~strX のうち、何番目に存在するかを返してくれます。
SELECt FIELD('竹組', '松組', '竹組', '梅組')
このような場合、「竹組」は2番目に存在しますので、「2」が返されます。
というわけでこの FIELD を利用して、 松組 > 竹組 > 梅組の順で並べるには次のような SQL を実行します。
SELECT * FROM `students` ORDER BY FIELD(class, '松組', '竹組', '梅組');
結果は以下の通りです。
