开发者社区> 问答> 正文

SQL Delete语句中的多个条件

我将Java和mysql结合使用用于Web应用程序。我想问一下这种说法是否行得通。

String delete="DELETE FROM `eoms`.`order` WHERE (`employeeID` = '"+eID+"', orderTime = '"+mealName+"', orderDate = '"+curDate+"');";

问题来源:Stack Overflow

展开
收起
montos 2020-03-22 15:06:00 1673 0
1 条回答
写回答
取消 提交回答
  • 是的,您的删除查询应该可以,但是您应该使用准备好的语句:

    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。您将永远不得不order在反引号中逃脱桌子。同样,您似乎将订单时间和日期存储在单独的列中。这可能不是最佳做法,您应该考虑仅对订单使用单个datetime列。最后,也许您希望该WHERE子句中的所有三个限制同时适用。如果是这样,则只需OR与交换AND。

    回答来源:Stack Overflow

    2020-03-22 15:06:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载