比较单个查询中两个表的行数并返回布尔值

时间:2014-12-11 08:33:46

标签: sql database sqlite

我想比较两个表的行数,然后返回01,具体取决于是否相同。

我在考虑这样的事情,但不能继续前进,需要一些帮助。

SELECT 
       CASE WHEN (select count(*) from table1)=(select count(*) from table2)
       THEN 1
       ELSE 0
       END AS RowCountResult
FROM Table1,Table2

我使用01

获取多行而不是一行

3 个答案:

答案 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.