我想比较两个表的行数,然后返回0
或1
,具体取决于是否相同。
我在考虑这样的事情,但不能继续前进,需要一些帮助。
SELECT
CASE WHEN (select count(*) from table1)=(select count(*) from table2)
THEN 1
ELSE 0
END AS RowCountResult
FROM Table1,Table2
我使用0
或1
答案 0 :(得分:8)
你必须删除:
FROM Table1,Table2
否则,它将考虑此FROM子句的每一行的Case-When的结果。
答案 1 :(得分:2)
或者只需删除CASE WHEN CLAUSE并写下:
private CorpClientsCommRateD getCorpClientsCommRateD(Date date) {
CorpClientsCommRateD commissionRate=null;
try {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<CorpClientsCommRateD> query = builder.createQuery(CorpClientsCommRateD.class);
Root<CorpClientsCommRateD> root = query.from(CorpClientsCommRateD.class);
List<Predicate> conditions = new ArrayList();
conditions.add(builder.between(date,root.get("effFromDate"),root.get("effToDate")));
query.select(root)
.where(conditions.toArray(new Predicate[]{}));
TypedQuery<CorpClientsCommRateD> commissionRates = em.createQuery(query);
commissionRate=commissionRates.getSingleResult();
}
catch(Exception exp)
{
return commissionRate;
}
return commissionRate;
}
将返回布尔结果。
答案 2 :(得分:0)
如果您使用的是Oracle数据库,请使用FROM dual
代替FROM Table1,Table2
否则解析器将抛出以下错误:ORA-00923: FROM keyword not found where expected.