質問: SQLで、ある文字列を含むレコードを取得します。 ただし、文字列の先頭からマッチするものを優先させたいのです。 1回のSQLでできるでしょうか? 通常、 『SELECT * FROM hoge WHERE name LIKE '%w%' ORDER BY name ASC;』 と入力すると、 『arrow, now, snow, wake, world』 のような順番になります。 しかし、そうではなく、 『wake, world, arrow, now, snow』 のように、まず文字列の頭からヒットするものを優先したいのです。 つまり、 『WHERE name LIKE 'w%' ORDER BY name ASC』と 『WHERE name LIKE '%w%' AND name NOT LIKE 'w%' ORDER BY name ASC』 の結果を、混ぜ合わせるのではなく、前後につなぎ合わせたいのです。 MySQL、またはSQLiteにおいて、どのような方法を採ればいいでしょうか? なるべく1文のSQLで行いたいのですが...。
回答: 今手元のPCでMSアクセスしかなくて、クエリーでやってみたのですが、 もうひとつ昇順のキイ項目を作ってそこに、 name LIKE 'w% だったら『1』をセットし、 そうでなかったら『2』をセットする として、このキイ項目を昇順の第一キイとし、 nameを昇順の第二キイにすれば、wが先頭にくるnameの方が優先してソートされます。