[英]nested where clause i mysql giving sql grammmar exception
I need help with MySQL as I am new to it. 我是MySQL的新手,需要帮助。
Basically for a selected date range i need the count of records where tracking number is present in a table called UniwareReport
but airway bill no. 基本上对于选定的日期范围,我需要记录的计数,其中在称为
UniwareReport
的表中存在跟踪号,但有航空费用帐单号。 is not present in MisReport
在
MisReport
不存在
Below is what i attempted but i know that is not right. 以下是我尝试过的内容,但我知道这是不正确的。
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();
}
You don't need another SELECT from UniwareReport inside your subquery. 您在子查询中不需要UniwareReport中的另一个SELECT。 This should work:
这应该工作:
select count (*) from UniwareReport
where invoiceCreated >= :sDate
and invoiceCreated <= :eDate
and TrackingNumber NOT IN (select airwayBill from MisReport)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.