並べ替えの基準となる列を列番号で指定する

 クエリで列を指定する場合はその名前で指定しますが、ソートの基準となる列を指定する場合には、列の番号を用いることもできます。
 ただし全くの豆知識といえるもので、実用的におすすめできるようなものではありません。下記の内容からわかるように、抽出する列を増やしたり減らしたりしたときにソートの基準が変わってしまうためです。

f:id:accs2014:20170218181616p:plain:right:w400

 例として右のようなテーブルを用います。


f:id:accs2014:20170218181615p:plain:right:w400

 このテーブルをもとにクエリを作成します。


f:id:accs2014:20170218181614p:plain:right:w400

 SQLビューで開き、表示されているSQLの末尾に「ORDER BY 3,4」と加えます。
 これは、3番目の列と4番目の列を基準として昇順でソートするという意味になります。
 ここで、3(4)番目の列というのは、テーブルにおける順番ではなく、クエリにおける順番を指します。つまり3番目の列というのは「力」列を、4番目の列というのは「知恵」列を指します。


f:id:accs2014:20170218181612p:plain:right:w400

 再度デザインビューで開いた様子です。
 SQLビューではなく最初からデザインビュー上でこのように設定しても、もちろん同じ結果が得られます。


f:id:accs2014:20170218181611p:plain:right:w400

 データシートビューです。「力」列と「知恵」列の値に基づきソートされているのがわかります。


f:id:accs2014:20170218181652p:plain:right:w400

 さて、次の例です。
 右のテーブルのように列名が数字である場合、列番号による指定はどうはたらくでしょうか。


f:id:accs2014:20170218181651p:plain:right:w400

 同じようにクエリを作成します。


f:id:accs2014:20170218181650p:plain:right:w400

 SQLビューで「ORDER BY 3,4」を追加します。


f:id:accs2014:20170218181647p:plain:right:w400

 これを再度デザインビューで開くと右のようになります。
 ここからわかるうように、「3」と指定したものは、列名の「3」を指定したものとみなされます。一方「4」は列名にはありませんので、列番号を指定、つまり4番目の列である「2」列を指定したものとみなされます。ややこしいですね;-o-)


f:id:accs2014:20170218181646p:plain:right:w400

 データシートビューです。「3」列と「2」列の値に基づきソートされています(「3」列が優先)。