2

さまざまなユーザーに属するレコードを含むテーブルがあります。

テーブル:

RECORD_ID     USER_ID     DATE_CREATED
1             5           08/05/12
2             5           08/04/12
3             10          08/05/12
4             10          08/02/12
5             10          08/01/12

クエリ:

SELECT user_id, MIN(date_created) as date_created
FROM (entries) 
GROUP BY user_id

クエリは、各ユーザーの最も古いレコードを返します。

RECORD_ID     USER_ID     DATE_CREATED
2             5           08/04/12
5             10          08/01/12

特定の日付に最も近いが、それより古いレコードを選択するにはどうすればよいですか? 線に沿った何か...

SELECT oldest record > given oldest record
WHERE oldest record NOT =< given oldest record

たとえば、クエリは user のすべてのレコードを返します10

RECORD_ID     USER_ID     DATE_CREATED
3             10          08/05/12
4             10          08/02/12
5             10          08/01/12

ユーザーの指定日10は です08/02/12。ここで、上の次に古いレコードを選択する必要があります08/02/12

それ08/05/12は、トップに達しない限り、それ以下の記録になることはありません。これはMYSQLでどのように可能ですか?

4

4 に答える 4

2

どうですか

date_created > somedate order by date_created desc limit 1 のエントリから user_id、date_created を選択します。

于 2012-08-07T00:54:20.843 に答える
2

WHEREとの組み合わせでこれを行うことができますLIMIT

SELECT user_id, content, MIN(date_created) as date_created
FROM (entries) 
WHERE date_created > '2012-08-02'
GROUP BY user_id
LIMIT 1

そこWHEREのステートメントは日付の問題を処理します。このLIMITステートメントは、結果を 1 行に抑えます。明らか2012-08-02'に、変数または必要な日付に変更できます。

于 2012-08-07T00:37:29.713 に答える
2

$date_given指定された日付にしましょう。

SELECT user_id, MIN(date_created) as date_created
FROM (entries) 
WHERE date_created > $date_given
GROUP BY user_id
LIMIT 1
于 2012-08-07T00:38:00.257 に答える
0

record_id を持つすべてのユーザーの最も近いレコードを選択するクエリを次に示します。「08/02/12」を必要な日付に変更するだけです。

select 
    entries.record_id,entries.user_id, entries.Date_created 
from entries
join
(select 
      user_id,min(Date_created) minDate 
           from entries 
           where Date_Created>'08/02/12' 
      group by user_id
) minDates on (entries.user_id=minDates.user_id) 
              and 
              (entries.Date_created=minDates.minDate)
于 2012-08-07T10:07:41.387 に答える