結論から言うと、MySQLではDELETE文やUPDATE文にORDER BY句やLIMIT句を使うことができる。つまり、実行した結果をソートした順のレコードへ、DELETEやUPDATEの処理を適用することが可能ということだ。 これはSQL標準におそらくないものでありMySQL独自の拡張構文であり(軽く調べた限り)PostgreSQLやOracleでは使えない。
Delete from fremdgehen where id IN (Select id from fremdgehen limit 1);
SQLが実行される順序は以下のようになっており FROM → WHERE → GROUPBY → HAVING → SELECT → ORDERBY GroupByでグルーピングする前に抽出するのがWhere句で GroupByでグルーピングした後に抽出するのがHaving句になります。
select cast(created_at as date) as day,count(*) from comments group by day order by day asc