「グループ化」によってテーブルから行を選択しようとしていますが、データを日付で並べ替えて得られた最初の行を無視しています。グループの最新のエントリを無視して古いエントリを返すには、日付フィールドで並べ替えを行う必要があります。
テーブルは次のようになります
+----+------------+-------------+-----------+
| id | updated on | group_name | list_name |
+----+------------+----------------+--------+
| 1 | 2013-04-03 | g1 | l1 |
| 2 | 2013-03-21 | g2 | l1 |
| 3 | 2013-02-26 | g2 | l1 |
| 4 | 2013-02-21 | g1 | l1 |
| 5 | 2013-02-20 | g1 | l1 |
| 6 | 2013-01-09 | g2 | l2 |
| 7 | 2013-01-10 | g2 | l2 |
| 8 | 2012-12-11 | g1 | l1 |
+----+------------+-------------+-----------+
http://www.sqlfiddle.com/#!2/cec99/1
したがって、基本的には、group_name と list_name で最も古い ID (3,4,5,6,8) を返したいだけです。group_name と list_name に基づいてグループ化することにより、最新のエントリを無視して古いエントリを返す
この問題の sql を書くことができません。order by は group by では機能しないことを知っています。解決策を見つけるのを手伝ってください。
ありがとう
また、サブクエリを使用せずにこれを行う方法はありますか?