java - 嵌套 where 子句 i mysql 给出 sql 语法异常

标签 java mysql

我需要有关 MySQL 的帮助,因为我是新手。

基本上,对于选定的日期范围,我需要记录的数量,其中跟踪编号存在于名为 UniwareReport 的表格中,但空运账单编号。不存在于 MisReport

以下是我尝试过的,但我知道这是不对的。

select count (*) from UniwareReport
  where invoiceCreated >=:sDate
    and invoiceCreated <=:eDate
    and TrackingNumber NOT IN(select airwayBill from MisReport)


@Override
public Long getUniwareReportsCountInDateRange(String param) throws ParseException {
    String sDate = param;
    String eDate = param;
    //String oId = saleOrderNumber.trim();
    Query query;
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
    if (param.contains("-")) {
        String date[] = param.split("-");
        sDate = date[0];
        eDate = date[1];
    }
        query = sessionFactory.getCurrentSession().createQuery(
                "select count (*) from UniwareReport where invoiceCreated>=:sDate and invoiceCreated <=:eDate and (SELECT trackingNumber from UniwareReport where trackingNumber NOT IN(select airwayBill from MisReport))");
        Date startDate = DateUtils.addToDate(dateFormat.parse(sDate), Calendar.DATE, 0);
        Date endDate = DateUtils.addToDate(dateFormat.parse(eDate), Calendar.DATE, 1);
        query.setParameter("sDate", startDate);
        query.setParameter("eDate", endDate);
        //query.setParameter("oId", oId);
        return (Long) query.uniqueResult();

}

最佳答案

您不需要在子查询中从 UniwareReport 进行另一个 SELECT。这应该有效:

select count (*) from UniwareReport
  where invoiceCreated >= :sDate
    and invoiceCreated <= :eDate
    and TrackingNumber NOT IN (select airwayBill from MisReport)

关于java - 嵌套 where 子句 i mysql 给出 sql 语法异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31500297/

相关文章:

java - 为什么我收到错误语法错误?

java - 如何实现类似阻塞队列的SQL机制

java - 如何使 Eclipse 使用 bnd 注释自动生成 OSGi 声明性服务捆绑组件 XML?

java - 为什么这个 javac : File Not Found error?

java - 将图像的 byte[] 从 Spring Controller 发送到 jQuery

php - 如何在 laravel 中转换 sql 的核心查询?

php - 将旧表结构迁移到新发现的枚举不起作用

WHERE 子句中的 MySQL CAST 和 LIKE

PHP PDO : Multiple objects extend dbwrapper; How many MySQL connections?

mysql - 使用mysql上的 View 组合来自多个表的数据