普通なのかもだけど、SQLのwhere句で2つのキーを指定したくて、やったことなかったけどできたのでメモ。
point_table |name|point|date| |jiro|120|20111101| |taro|100|20111001| |jiro|110|20111001| |taro|100|20110901| |jiro|90|20110901| |taro|110|20110801| |jiro|80|20110801| age_table |name|age|date| |taro|20|20111001| |jiro|20|20111001| |taro|19|20110901| |jiro|20|20110901| |taro|19|20110801| |jiro|19|20110801|
こんなテーブルがあって、taroとjiroの直近に受けたテストの時に何歳だったか知りたい場合こんなSQLになる。
select name,age from age_table where (name,date) in (select name,max(date) from point_table group by name ) テンプレート:select * from fizz where (a,b) in (select c,d from buzz)
where句のinは、右辺も左辺も複数指定できる。
これ使ったおかげでこんがらがってたSQLが大幅にリファクタでき、さらに速くなった。