0

我有一个包含以下字段的表:

 PersonnelTable Table fields:

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

在该表中,我允许重复记录。

我想从该表中删除一个事件,其中:

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();

Password = ?但是该查询将删除所有记录 UserName = ?

如何使用该查询仅删除一条记录?

谢谢

4

2 回答 2

2

LIMIT子句也可以在UPDATEorDELETE语句中使用:

"DELETE FROM `PersonnelTable` WHERE `Password` = ? AND `UserName` = ? LIMIT 1"
于 2012-08-13T09:34:21.483 回答
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 回答