首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL -对SQL查询执行SQL查询

SQL -对SQL查询执行SQL查询
EN

Stack Overflow用户
提问于 2012-07-25 22:51:38
回答 4查看 1.2K关注 0票数 3

是否可以在另一个SQL查询上运行SQL查询?我有一个SQL查询,它使用Union All子句将多个列编译成一个列。我需要使用group子句,但您将看到这是不可能的。有没有办法在这个查询上运行另一个SQL查询?

查询:

代码语言:javascript
运行
复制
Select Ins1 as Insurance

From InsAuth2
WHERE Ins1 IS NOT NULL
Group By Ins1
Union All
Select Ins2 as Insurance
From InsAuth2
WHERE Ins2 IS NOT NULL
Group By Ins2
Union All
Select Ins3 as Insurance
From InsAuth2
WHERE Ins3 IS NOT NULL
Union All
Select Ins4 as Insurance
From InsAuth2
WHERE Ins4 IS NOT NULL
Union All
Select Ins5 as Insurance
From InsAuth2
WHERE Ins5 IS NOT NULL

我需要能够从这个编译的列中选择唯一的值。我可以在每个语句中使用group by,但是这只会返回原始列中的唯一值。如果对一列唯一的值对另一列也是唯一的,则编译后的列可能不会具有所有唯一值。因此,我必须让另一个SQL查询在这个查询上操作。有什么建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-25 22:54:53

使用内部查询,即

代码语言:javascript
运行
复制
SELECT *
FROM
(
    YourQueryHere
) Inn
GROUP BY YourColumnHere
票数 6
EN

Stack Overflow用户

发布于 2012-07-25 22:54:13

使用派生表和distinct:

代码语言:javascript
运行
复制
select distinct Insurance
from
(
  Select Ins1 as Insurance
  From InsAuth2
  WHERE Ins1 IS NOT NULL
  Union All
  Select Ins2 as Insurance
  From InsAuth2
  WHERE Ins2 IS NOT NULL
  ...
) table_alias
票数 3
EN

Stack Overflow用户

发布于 2012-07-25 22:59:45

如果您使用UNION而不是UNION ALL,它将过滤掉重复项

代码语言:javascript
运行
复制
Select Ins1 as Insurance
From InsAuth2
WHERE Ins1 IS NOT NULL
Group By Ins1
Union
Select Ins2 as Insurance
From InsAuth2
WHERE Ins2 IS NOT NULL
Group By Ins2
Union
Select Ins3 as Insurance
From InsAuth2
WHERE Ins3 IS NOT NULL
Union
Select Ins4 as Insurance
From InsAuth2
WHERE Ins4 IS NOT NULL
Union
Select Ins5 as Insurance
From InsAuth2
WHERE Ins5 IS NOT NULL
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11652514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档