inner join on 1=1 在查询中的高级用法
最近在项目中看到一个查询语句,让我有兴趣去研究、研究。查询语句如下:
重点分析第二个INNER JOIN ON 1 = 1 这个语句;内连接表示查询两个表的交集,而且ON的条件为 1=1 就表示连接条件永远成立。
更确切的说就是将第二个INNER JOIN 前面的查询结果和后面的查询结果组装成一个结果进行返回。这就比较有意思了,因为这种查
询方式可以是两个完全不同的查询结果,并且只需要写一个查询语句,这在一定程度上提升了效率。以上面的查询为例trade_name, total
是一个查询结果;alltotal是另外一个查询结果,最后将这两个不同的查询结果合成为一个结果返回。这样既满足了业务的需求,也提高了
效率,所以有需要的时候还是值得借鉴一下。
如果是常规做法可能会先做一个查询去查询trade_name, total和值;然后在做一个查询去查询alltotal的值;最后在代码中进行合并,
将最终的结果返回。比较一下这两种方式,还是只查询一次,代码更加的简洁,SQL语句的话也很好理解。不过这种查询方式只适用于
统计查询,或者是返回结果只有一行的情况。
说明:添加双引号是因为Oracle查询时返回的列全部是大写的,而对应的实体类中列名是小写的,因此才添加双引号将Oracle查询的
结果变为小写,这样才能将结果正确的映射到实体类中。