La primera pregunta que me gustaría hacer es: ¿es más rápido hacer una consulta de eliminación con varias cláusulas where, o es más rápido hacerlo una por una? Y en segundo lugar, si es así, ¿cómo hacer una consulta de eliminación con múltiples cláusulas where? ¡Gracias por adelantado!

4
J. Arbet 27 ene. 2016 a las 23:58

2 respuestas

La mejor respuesta

No puede tener más de una cláusula WHERE, pero puede hacer que la condición sea más compleja.

Si su tabla tiene FirstName y LastName, y desea eliminar John Doe, Toby Steed y Linda Powers, combine AND y {{ X6}} condiciones como esta:

DELETE FROM MyTable
 WHERE ( FirstName = 'John' AND LastName = 'Doe' )
    OR ( FirstName = 'Toby' AND LastName = 'Steed' )
    OR ( FirstName = 'Linda' AND LastName = 'Powers' )

Ahora, si lo hace desde Java, no debería (¡NUNCA!) Usar la concatenación de cadenas para construir una declaración SQL como esa. Utilice un PreparedStatement:

String sql = "DELETE FROM MyTable" +
             " WHERE ( FirstName = ? AND LastName = ? )" +
                " OR ( FirstName = ? AND LastName = ? )" +
                " OR ( FirstName = ? AND LastName = ? )";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
    stmt.setString(1, "John");
    stmt.setString(2, "Doe");
    stmt.setString(3, "Toby");
    stmt.setString(4, "Steed");
    stmt.setString(5, "Linda");
    stmt.setString(6, "Powers");
    stmt.executeUpdate();
}
5
Andreas 27 ene. 2016 a las 21:27

Intente usar esto, tal vez sea la solución a su pregunta:

   db.delete(TABLE,
    KEY1 + "=? AND " + KEY2 + "=? AND " +
    KEY3 + "=? AND " + KEY4 + "=?",
    new String[] {param1, param2, param3, param4});

Si usa una selección normal, use esto:

   db.delete(TABLE,"Column1='value1' and column2 like 'value2'...", null);
2
Abdelhak 27 ene. 2016 a las 21:27