0

次のフィールドを持つテーブルがあります。

 PersonnelTable Table fields:

 * FirstName
 * LastName
 * Address
 * IdNumber
 * UserName
 * Password
 * Status

そのテーブルでは、重複レコードを許可します。

そのテーブルから1つのオカレンスを削除したい:

String sqlStatement = "DELETE FROM `PersonnelTable` WHERE `Password` = ? AND `UserName` = ? ";
m_prepared.setString(1, _password);  // set the password
m_prepared.setString(2, _username);  // set the user-name
int rowsAffected = m_prepared.executeUpdate();

しかし、そのクエリはすべてのレコードを削除します where Password = ?およびUserName = ?

そのクエリを使用して1 つのレコードのみを削除するにはどうすればよいですか?

ありがとう

4

2 に答える 2

2

このLIMIT句はUPDATEorDELETEステートメントでも使用できます。

"DELETE FROM `PersonnelTable` WHERE `Password` = ? AND `UserName` = ? LIMIT 1"
于 2012-08-13T09:34:21.483 に答える
1

そのクエリを使用して 1 つのレコードのみを削除するにはどうすればよいですか?

mySQL の DELETE ステートメントの "LIMIT 1" 句を使用できます。

ただし、最後の行以外をすべて削除する場合は、次のようにする必要があります。

BEGIN TRANSACTION;
SELECT COUNT(*) FROM `PersonnelTable` WHERE `Password` = ? AND `UserName` = ? FOR UPDATE;
DELETE FROM `PersonnelTable` WHERE `Password` = ? AND `UserName` = ? LIMIT ?; # (last fetched count - 1)
COMMIT;
于 2012-08-13T09:44:55.087 に答える