AWS、SimpleDBのクエリーでソートをするときの注意

データベース内のデータをソートして持ってこようとするときに

String sql =
              new StringBuilder("SELECT * FROM ")
                .append(tablename)
                .append(
                  " where orgId = '"
                    + orgId
                    + "' order by endDate desc")
                .toString();
            SelectResult select =
              sdb.select(new SelectRequest(sql).withConsistentRead(true));

として送りつけたらエラーが返される。これはソートするデータにnullがあった場合に困るので、明示する必要があるためです。

なので、

String sql =
              new StringBuilder("SELECT * FROM ")
                .append(tablename)
                .append(
                  " where orgId = '"
                    + orgId
                    + "' AND endDate is not null order by endDate desc")
                .toString();
            SelectResult select =
              sdb.select(new SelectRequest(sql).withConsistentRead(true));

のように、ソートしたい対象にはwhere句で[ソート対象]is not nullでヌルの場合に除外するよう明示して検索をしてください。