SQL 删除语句中的多个条件
Multiple conditions in an SQL Delete statement
我将 java 与 mysql 结合用于 Web 应用程序。我想问问这个说法行得通吗
String delete="DELETE FROM `eoms`.`order` WHERE (`employeeID` = '"+eID+"', orderTime = '"+mealName+"', orderDate = '"+curDate+"');";
您应该将条件与 and
运算符结合起来
String delete="DELETE FROM `eoms`.`order` WHERE (`employeeID` = '"+eID+"' and orderTime = '"+mealName+"' and orderDate = '"+curDate+"')";
按照建议,为您的参数使用准备语句以避免 SQL 注入
String deleteQuery = "DELETE FROM `eoms`.`order` WHERE employeeID =? and orderTime =? and orderDate=? ";
PreparedStatement preparedStmt = conn.prepareStatement(deleteQuery);
preparedStmt.setInt(1, eID);
preparedStmt.setInt(2, mealName);
preparedStmt.setInt(3, curDate);
preparedStmt.executeUpdate();
conn.close();
是的,您的删除查询应该有效,但您应该使用准备好的语句:
String delete = "DELETE FROM `eoms`.`order` WHERE employeeID = ? OR orderTime = ? OR orderDate = ?";
PreparedStatement ps = conn.prepareStatement(delete);
ps.setInt(1, eID);
ps.setTime(2, orderTime);
ps.setDate(3, curDate);
int row = ps.executeUpdate();
System.out.println(row + " rows were deleted.");
旁注:请避免使用保留的 SQL 关键字(例如 order
)命名您的 table(和其他数据库对象)。你将永远不得不在反引号中转义你的 order
table 。此外,您似乎将订单时间和日期存储在单独的列中。这可能不是最佳做法,您应该考虑只对订单使用单个日期时间列。最后,也许您打算同时应用 WHERE
子句中的所有三个限制。如果是这样,那么只需将 OR
与 AND
交换即可。
我将 java 与 mysql 结合用于 Web 应用程序。我想问问这个说法行得通吗
String delete="DELETE FROM `eoms`.`order` WHERE (`employeeID` = '"+eID+"', orderTime = '"+mealName+"', orderDate = '"+curDate+"');";
您应该将条件与 and
运算符结合起来
String delete="DELETE FROM `eoms`.`order` WHERE (`employeeID` = '"+eID+"' and orderTime = '"+mealName+"' and orderDate = '"+curDate+"')";
按照建议,为您的参数使用准备语句以避免 SQL 注入
String deleteQuery = "DELETE FROM `eoms`.`order` WHERE employeeID =? and orderTime =? and orderDate=? ";
PreparedStatement preparedStmt = conn.prepareStatement(deleteQuery);
preparedStmt.setInt(1, eID);
preparedStmt.setInt(2, mealName);
preparedStmt.setInt(3, curDate);
preparedStmt.executeUpdate();
conn.close();
是的,您的删除查询应该有效,但您应该使用准备好的语句:
String delete = "DELETE FROM `eoms`.`order` WHERE employeeID = ? OR orderTime = ? OR orderDate = ?";
PreparedStatement ps = conn.prepareStatement(delete);
ps.setInt(1, eID);
ps.setTime(2, orderTime);
ps.setDate(3, curDate);
int row = ps.executeUpdate();
System.out.println(row + " rows were deleted.");
旁注:请避免使用保留的 SQL 关键字(例如 order
)命名您的 table(和其他数据库对象)。你将永远不得不在反引号中转义你的 order
table 。此外,您似乎将订单时间和日期存储在单独的列中。这可能不是最佳做法,您应该考虑只对订单使用单个日期时间列。最后,也许您打算同时应用 WHERE
子句中的所有三个限制。如果是这样,那么只需将 OR
与 AND
交换即可。