SQL与预期结果的比较

时间:2017-10-27 10:58:17

标签: sql

我想将我的SQl结果与预期结果进行比较,并将其显示为true或false,具体取决于结果是否匹配

预期结果实际结果(通过/失败)结果 今天的日期通过日期

2 个答案:

答案 0 :(得分:0)

嗯,目前还不清楚你想做什么。如果您使用库或框架与您的程序集成,您所要做的就是从数据库中检索结果并使用布尔操作进行比较,如><>=<===!=等。在if else这样的结构中使用此比较,您只需print结果。< / p>

答案 1 :(得分:0)

您没有说明您的DBMS,因此这是ANSI SQL:

with expected_results (id, col1, col2) as (
  values (1, 'some', 'thing'), 
         (2, 'another', 'value')
), actual_result (id, col2, col2) as (
  select id, col1, col2
  from your_table
    from .... --<< add your joins
  where .... --<< add your conditions
), diff (id, col1, col2) as (
  select *
  from expected_result
  except
  select *
  from actual_result

  union all 

  select *
  from actual_result
  except
  select *
  from expected_result
) 
select count(*) > 0 as "Result is correct"
from diff;

第一个CTE构建您期望的结果,第二个CTE运行您的实际查询。名为diff的CTE计算expected_result中是否存在不在actual_result中的行,并将其与actual_result中但不在expected_result中的行组合。如果该集合为空,则实际和预期结果相同。

该示例假定id是预期结果中行的唯一标识符。

使用Postgres,您可以使用以下方法简化差异检测:

select count(*)
from actual_result ar 
  full outer join expected_result er on er.id = ar.id
where ar is distinct from er;

比较这样的记录不是ANSI标准SQL的一部分。