我需要有关 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/