视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
sqlunion查询实现复杂查询
2020-11-09 09:59:56 责编:小采
文档


union是一个联合查询,他可以选择2个或更多的表的数据集进来各类操作,有时我们要过滤重复等都是可以的,好面来看看实例吧。

UNION查询,让您结合2个或更多的“选择”查询的结果集。它消除了各种“选择”报表之间的重复行。

每个内部查询的SQL语句必须在结果中相同的字段数套类似的数据类型。

UNION查询的语法是:

代码如下
field1, field2, . field_n
from tables
UNION
select field1, field2, . field_n
from tables;


Example #1

The following is an example of a UNION query:

代码如下

select supplier_id
from suppliers
UNION
select supplier_id
from orders;

在这个例子中,如果supplier_id出现在供应商和订单表,它会出现在您的结果集一次。会删除重复内容。

例#2 - ORDER BY子句

下面是一个UNION查询,使用ORDER BY子句

代码如下
select supplier_id, supplier_name
from suppliers
where supplier_id > 2000
UNION
select company_id, company_name
from companies
where company_id > 1000
ORDER BY 2;

问:我需要比较两个日期和返回日期值的基础上的一个字段计数。例如,我在一个表的日期字段称为最后更新日期。我要检查,如果TRUNC(last_updated_date> = TRUNC(SYSDATE- 13)。

答:由于您使用的是这是一个聚合函数COUNT函数,我们建议你使用UNION查询。例如,你可以尝试以下方法:

代码如下

SELECT a.code as Code, a.name as Name, count(b.Ncode)
FROM cdmaster a, nmmaster b
WHERE a.code = b.code
and a.status = 1
and b.status = 1
and b.Ncode <> 'a10'
and trunc(last_updated_date) <= trunc(sysdate-13)
group by a.code, a.name
UNION
SELECT a.code as Code, a.name as Name, count(b.Ncode)
FROM cdmaster a, nmmaster b
WHERE a.code = b.code
and a.status = 1
and b.status = 1
and b.Ncode <> 'a10'
and trunc(last_updated_date) > trunc(sysdate-13)
group by a.code, a.name;

下载本文
显示全文
专题