2010-11-18 25 views
0

BY MAXとGROUPを通報しますので、私は今、この権利のようなルックスを作るしようとしているクエリ:MySQLの選択は、過去の日付:

SELECT `jid`, MAX(`start`) as `start` FROM `dates` WHERE `start` < NOW() GROUP BY `jid` 

テーブルdatesは基本的に関連付けられたDATETIME値startを保持しています仕事。
おそらく推測したように、jidは別のテーブルに保存されたジョブのIDです。
仕事は、私が達成しようとしているどのような多くのdates

を持つことができるジョブは、過去のすべての彼らのstartの日付を持っているものを見つけることです。

jidでグループ化されたstartの日付の最高値を選択し、過去のものであれば、同じ仕事に関連付けられた他の日付もすべて過去であることを暗示します。

過去にstartの日付を確認してから、その中から最高のものを選択しているため、このクエリは機能しません。これは、同じ仕事の将来の可能性を排除するものではありません。

私は今どのように進むことができないのか分かりません。どんな助けや手がかりもありがとうございます。

乾杯 - トム

答えて

2

あなたが持って使用する必要があります:

SELECT jid, MAX(start) as start 
FROM dates 
GROUP BY jid 
HAVING MAX(start) < NOW(); 

ビットのような行為を備えました。が選択された後に行が除外されます。通常は(実際には他のケースについて考えることはできません)、HAVINGは集合関数でのみ使用します。

(私も、あなたのテーブルにあなたの将来に本当に挿入された日付を願っています!)

+0

おかげで、1つのより多くの質問を、あなたは私が私のテーブルに未来の日付を持っていることを望みます言うのですかなぜですか? – TomWilde

+0

これ以外の場合は、何も返されません(過去に日付がある場合) –

関連する問題