2011-12-23 9 views
1

この表では、最も古いエントリがghi 10/12/2011 11:20:22であるuserid 1の最も古いエントリを削除したいと思います。同じクエリで日付の時刻を比較して削除する方法を教えてください。私はuserid 1の日時エントリを比較したいと思います。クエリでdatetimeを比較し、mysqlで削除を実行します

tbl_nameからの削除ここで、datetimeはoldestentryとuserid = 1です。

No Name  DateTime    UserID 
1  abv  12/12/2011 11:20:22   1 
2  edf  11/12/2011 11:20:22   1 
3  ghi  10/12/2011 11:20:22   1 

答えて

2

これは、MySQLで動作しません。

DELETE 
FROM tbl_name 
WHERE No = 
     (SELECT No 
     FROM tbl_name 
     WHERE UserID = 1 
     ORDER BY datetime ASC 
     LIMIT 1 
    ) 

が、これはありません:

DELETE 
FROM tbl_name 
WHERE UserID = 1 
ORDER BY datetime ASC 
LIMIT 1 
3
DELETE FROM tbl_name 
WHERE datetime = 
     (SELECT MIN(datetime) FROM tbl_name) 

しかし、彼らは同じ日時がある場合は、この文は、複数の行を削除することができます。生憎mysqlは直接これをサポートしていません

DELETE FROM tbl_name 
WHERE No = 
     (SELECT No FROM tbl_name ORDER BY datetime ASC LIMIT 1) 

: ベターようなものになるだろう。しかし、回避策があります:

DELETE FROM tbl_name 
WHERE No = 
     (SELECT No 
     FROM 
      (SELECT No FROM tbl_name ORDER BY datetime ASC LIMIT 1 
     ) AS newtablename 
    ) 
+0

私はあなたがすることができます与えた2番目のクエリのために、このエラーを取得しています'FROM句 – Murthy

+0

の更新のためのターゲットテーブル' tbl_name 'を指定していません。私はそれをgoogledしました。 Mysqlは、delete文で同じテーブルを使用するサブクエリはサポートしていません。しかし、回避策があります - 私は上記の私の答えにそれを追加しました。 – Heinzi

関連する問題