日付と制限に基づいて値を識別する

私は値のリストに出力しました。

Name  Date of Entry
C1 - 1/1/2011
C3 - 3/3/2011
C2 - 2/2/2011    
C4 - 4/4/2011
C5 - 5/5/2011

例えば、上記のリスト数は5ですが、私は2としてキャップ数を持っているので、2より大きいCは無効にし、無効にするCは入力日に基づいています。

ie. take out the Cs that are older based on date (first entered into the system), in this case C1 and C2 should be enabled and C3, C4 & C5 should be disabled.

select * from table order by date; => This gives me C1,C2,C3,C4,C5.

select * from table order by date limit 2; => This gives me C1 and C2 which is great, but how do i know C3,C4,C5 need to be disabled.

C3、C4、C5を無効にする必要があることを特定したい。

単一のクエリで行うことは可能ですか?任意のMySQLの開発者の助け?

ありがとう。

1
更新はありません。無効にするものを知る必要があります。
追加された 著者 Sharpeye500,
Yesの日付は一意で、実際にはdatetimeは2011年1月1日の10:10:12なので、同じ日付はありません。
追加された 著者 Sharpeye500,
無効にする必要がある行の名前を選択するだけでいいですか、またはテーブルに対して更新を実行しますか?
追加された 著者 Mark Byers,
ユニークな日付が保証されていますか? 2011年1月1日の日付が3つある場合はどうなりますか?ランダムに2つを削除しますか?
追加された 著者 Mark Byers,

1 答え

日付が一意であると仮定して、これを試してください:

SELECT
    name,
    date,
    date >
    (
        SELECT MIN(date)
        FROM your_table
        WHERE date > (SELECT MIN(date) FROM your_table)
    ) AS disabled
FROM your_table
ORDER BY date
2
追加された
エラーコード:1235このバージョンのMySQLはまだ 'LIMIT&IN/ALL/ANY/SOMEサブクエリ'をサポートしていません。5.2を使用しています。バージョン#に関連しているとは思われません。
追加された 著者 Sharpeye500,
これは非常に近いですが、私に正解を与えていません。 2011年1月1日2/2/2011 3/3/2011 4/4/2011 5/5/2011分の日付が2011年1月1日である場合、私はトップ2をフェッチする必要があります。 2011年1月1日と2011年2月2日に有効になり、2011年3月3日、2011年4月4日、2011年5月5日を無効にする必要があります。すなわち、テーブルからの選択if(現在の行の日付> min(date)、1,0)を介して、これらのエントリに対して1と0のフラグを立てます。すなわち、私は論理を取得していると思う、シンタックスについてはわからないと思います。
追加された 著者 Sharpeye500,
つまり2011年1月1日 - 0 - が有効になります。 2011/02/02 - 2011/03/03 - 1 - 無効になっています。 4/4/2011 - 1 5/5/2011 - 1選択クエリの出力として。
追加された 著者 Sharpeye500,
マーク - ありがとう、あなたは男です!
追加された 著者 Sharpeye500,
@ Sharpeye500:申し訳ありませんが、私は前にそれをテストしていませんでした。更新された回答を試してみてください私はそれをテストし、それは動作するようです。
追加された 著者 Mark Byers,