首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将这两个数据库表合并为一个结果集?

如何将这两个数据库表合并为一个结果集?
EN

Stack Overflow用户
提问于 2009-05-25 06:43:39
回答 2查看 5.5K关注 0票数 1

我在系统里有两个表。我正在尝试创建一个视图来同时代表这两者,我不确定如何才能做到这一点,甚至不确定是否能做到这一点。

宠物

代码语言:javascript
复制
PetId INT PK
Name  VARCHAR(100)

PetOtherNames

代码语言:javascript
复制
PetID INT PK FK
Name VARCHAR(100) PK

所以,我有一张宠物桌。名称(在此表中)是它们的正式通用名称。每个宠物可能有零对多的其他名称。这些名称永远不会显示,但将在搜索查询中使用。

那么,让我们来看一些数据。

Pets数据

代码语言:javascript
复制
1. Fred
2. Barney
3. Foo
4. Megan Fox (boom tish)

PetsOtherName数据

代码语言:javascript
复制
2. B-b-b-Barney
2. Bannana Barney
2. Banannarama
4. TapTap

所以..。如果我查看这两个表,我希望得到以下结果……

代码语言:javascript
复制
SELECT *
FROM PetsView
ORDER BY PetId, Name

1. Fred
2. B-b-b-Barney
2. Barney
2. Bannana Barney
2. Banannarama
3. Foo
4. Megan Fox
4. TapTap

这将使我能够执行以下操作……

代码语言:javascript
复制
SELECT PetId, Name
FROM PetsView
WHERE CONTAINS(Name, 'Fox')

..。并返回4. Fox

代码语言:javascript
复制
SELECT PetId, Name
FROM PetsView
WHERE CONTAINS(Name, 'Fox')

..。并返回4. TapTap

干杯:)

PS。我不确定这篇文章的标题,所以请随意修改它(或者建议一个更好的标题,以便我更新)。

更新:这是针对sql2008的,但我假设结果应该是tsql.因此,它应该/可以应用于整个董事会。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-25 06:46:05

创建一个视图,该视图创建两个表的联合:

代码语言:javascript
复制
CREATE VIEW PetsView AS
SELECT * FROM Pets
UNION
SELECT * FROM PetOtherNames
票数 4
EN

Stack Overflow用户

发布于 2009-05-25 06:49:21

我不是想抢风头,但我以前就因为不使用UNION而感到不快。

基本上,如果在这两个表中都有完全相同的petId-Name组合,那么如果只使用UNION,那么结果集中只会出现一条记录。通过使用UNION ALL,您将看到副本(您可能想要也可能不想要)。

代码语言:javascript
复制
CREATE VIEW PetsView AS
SELECT petId, [Name] FROM Pets
UNION ALL
SELECT petId, [Name] FROM PetOtherNames

(在SQL Server中,"name“是一个关键字,所以我使用了转义括号)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/905612

复制
相关文章

相似问题

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