mysql - 如何在单个查询中使用 AND & LIKE OR 运算符进行搜索

标签 mysql

我正在设计一个图书馆管理系统,我想设计一个待处理请求页面,该页面选择并显示 issues_book 表中列 status=pending 的所有信息。我的观点是设计一个搜索字段,从待处理请求页面中的可用信息中搜索特定行,但它不会产生任何输出,请我的 friend ,我需要帮助

   public List<Issue_Use_Bean> search_pending_history(String search){
                    Connection connection=null;
                    DBConnection_LMS_Portal obj_DBConnection_SMS_Portal=new 
   DBConnection_LMS_Portal();
                    connection=obj_DBConnection_SMS_Portal.getConnection();
                    PreparedStatement ps=null;
                    ResultSet rs=null;
                    List<Issue_Use_Bean> list=new ArrayList<Issue_Use_Bean>();

                try { 


    String query="select * from issue_book where status='Pending' AND employee_id 
    like ? or book_title like ? or barcode like ? or issue_date like ? or return_date like ?  or 
    description like ? order by issue_date desc limit 500";
                    ps=connection.prepareStatement(query);
                    ps.setString(1, search);
                    ps.setString(2, "%"+search+"%");
                    ps.setString(3, "%"+search+"%");
                    ps.setString(4, "%"+search+"%");
                    ps.setString(5, "%"+search+"%");
                    ps.setString(6, "%"+search+"%");
                    ps.setString(7, "%"+search+"%");

                    System.out.println(ps);
                    rs=ps.executeQuery();

                    while(rs.next()){
                        Issue_Use_Bean obj_Issue_Use_Bean=new Issue_Use_Bean();

                      obj_Issue_Use_Bean.setStatus(rs.getString("status"));
                        obj_Issue_Use_Bean.setEmployee_id(rs.getString("employee_id"));
                        obj_Issue_Use_Bean.setBook_title(rs.getString("book_title"));

                        obj_Issue_Use_Bean.setBarcode(rs.getString("barcode"));
                        obj_Issue_Use_Bean.setIssue_date(rs.getString("issue_date"));
                        obj_Issue_Use_Bean.setReturn_date(rs.getString("return_date"));
                        obj_Issue_Use_Bean.setDescription(rs.getString("description"));
                        obj_Issue_Use_Bean.setIssue_sl_no(rs.getString("issue_sl_no"));

                        list.add(obj_Issue_Use_Bean);
                        }





                 }catch(Exception e){
                    e.printStackTrace();
                }finally{
                    if(connection!=null){
                        try {
                                connection.close();
                            }
                            catch (Exception e2) {
                            // TODO: handle exception
                            }
                    }
                    if(ps!=null){
                        try {

                            ps.close();
                            }
                         catch (Exception e2) {
                            // TODO: handle exception
                        }
                    }
                    if(rs!=null){
                        try {

                            rs.close();
                            }
                         catch (Exception e2) {
                            // TODO: handle exception
                        }
                    }

            }

                return list;

最佳答案

您需要括号来嵌套带有运算符的部分:

select * 
  from issue_book 
 where status='Pending' 
   and (   employee_id like ? 
        or book_title like ? 
        or barcode like ? 
        or issue_date like ? 
        or return_date like ? 
        or description like ? ) 
 order by issue_date desc limit 500

关于mysql - 如何在单个查询中使用 AND & LIKE OR 运算符进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59124156/

相关文章:

php - 未找到对象!在此服务器上找不到请求的 URL

MySQL json_remove 返回空值

MySql 不断重用 SQL 查询的结果

MySQL 表更新 - 如何避免last_activity_date不为空?

php - 改进 php 页面以向 Android 设备发送通知

mysql - Knex - MySQL 如何在单个 JavaScript 字符串中执行多个语句?

mysql - 在 mysql datetime 和 python timestamp 之间转换的正确方法是什么?

mysql - 错误 1452 : Cannot add or update a child row: a foreign key constraint fails

mysql:尝试使用远程IP连接到本地主机时连接被拒绝

Mysql错误: Subquery returns more than 1 row