【问题标题】:How to remove one occurrence from Mysql table ?如何从 Mysql 表中删除一个事件?
【发布时间】:2012-08-13 09:32:25
【问题描述】:

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

 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 = ? 的记录

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

谢谢

【问题讨论】:

    标签: java mysql prepared-statement


    【解决方案1】:

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

    "DELETE FROM `PersonnelTable` WHERE `Password` = ? AND `UserName` = ? LIMIT 1"
    

    【讨论】:

      【解决方案2】:

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

      您可以使用 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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-06
        • 2012-02-28
        • 2014-05-29
        • 2021-04-07
        • 2012-07-28
        相关资源
        最近更新 更多