SELECT name FROM items GROUP BY name ORDER BY number;
これ、itemsテーブルからnumber順にユニークなnameを取ってきてくれるんだと思っていたのですが、飛んだ間違いでした。
どうもGROUP BYしてからORDER BYしているらしい・・・。
しかし、WHERE句に色々付け足してみたりするとまた順番が変わったりする。
調べてみてもどうにもならないっぽい
解決策1. サブクエリーを使う
SELECT DISTINCT name FROM (SELECT name FROM items ORDER BY number) AS sub
解決策2. サーバー側で頑張る
SELECT name FROM items ORDER BY number DESC;
ここまで取得して、返ってきたリストをサーバー側ユニークにする処理をする。
rubyだったら
sql = "SELECT name FROM items ORDER BY number DESC"
res = ActiveRecord::Base.connection.select(sql)
names = res.values
names.uniq