您如何在数据库中的两个表之间进行匹配,然后将数据混合到一个新的 table/view 中?
How do you do a match between two tables in a database and then mash the data together into a new table/view?
我在数据库中有两个 table。让我们称它们为 "a" 和 "b"。我在这两个 table 中都有一个相似的字段,其中一个都不是主键,可以用来匹配数据。
"a" 和 "b" 都包含完全不同类型的数据。 "a" 有 5 个字段,而 "b" 有 8 个字段。我正在使用 SQL Server Express 和 localdb。
我如何从两个 table 中获取所有字段,并在两个 table 中匹配相似的字段,然后将连接的数据放入一个新的table 还是查看?
这是一些示例数据:
table "a"
ID ClientID ClientName URL SoftwareID
1 12345 Example 1 www.testuri.com 017AAA93o45B
2 13579 Example 2 www.google.com 029AAA93k32D
3 29384 Example 3 www.whosebug.com 022AAA93j22T
table "b"
ID ClientID Username Email Phone Software
1 29384 User 1 email@email.email 02932 423834 Software 1
2 29384 User 2 email@email.email 02134 234829 Software 2
3 12345 User 3 email@email.email 01293 021924 Software 1
"ClientID" 字段是两者之间相似的字段。
这将创建一个名为 myNewTableName
的新 table,其中包含来自两个 table 的每个 clientId 的数据。新创建的 table 的列数据类型将与原始列中的列相同。
SELECT [a].[ID] AS [aID]
, [a].[ClientID]
, [a].[ClientName]
, [a].[URL]
, [a].[SoftwareID]
, [b].[ID] AS [bID]
, [b].[Username]
, [b].[Email]
, [b].[Phone]
, [b].[Software]
INTO [myNewTableName]
FROM [a]
INNER JOIN [b]
ON [a].[ClientID] = [b].[ClientID]
如果您不想永久 table 包含此信息,因为它经常更改,但希望能够一起查看和查询这些列,请尝试制作视图(这可能是您想要的而不是另一个带有冗余数据的table。
GO
CREATE VIEW [dbo].[vw_myViewName] AS
SELECT [a].[ID] AS [aID]
, [a].[ClientID]
, [a].[ClientName]
, [a].[URL]
, [a].[SoftwareID]
, [b].[ID] as [bID]
, [b].[Username]
, [b].[Email]
, [b].[Phone]
, [b].[Software]
FROM [a]
INNER JOIN [b]
ON [a].[ClientID] = [b].[ClientID]
GO
然后您可以 select 视图中的信息,就像使用任何普通 table 一样,但它会 运行 查询并向您显示结果。使用以下命令查询您的新视图:
SELECT *
FROM [dbo].[vw_myViewName]
我在数据库中有两个 table。让我们称它们为 "a" 和 "b"。我在这两个 table 中都有一个相似的字段,其中一个都不是主键,可以用来匹配数据。
"a" 和 "b" 都包含完全不同类型的数据。 "a" 有 5 个字段,而 "b" 有 8 个字段。我正在使用 SQL Server Express 和 localdb。
我如何从两个 table 中获取所有字段,并在两个 table 中匹配相似的字段,然后将连接的数据放入一个新的table 还是查看?
这是一些示例数据:
table "a"
ID ClientID ClientName URL SoftwareID
1 12345 Example 1 www.testuri.com 017AAA93o45B
2 13579 Example 2 www.google.com 029AAA93k32D
3 29384 Example 3 www.whosebug.com 022AAA93j22T
table "b"
ID ClientID Username Email Phone Software
1 29384 User 1 email@email.email 02932 423834 Software 1
2 29384 User 2 email@email.email 02134 234829 Software 2
3 12345 User 3 email@email.email 01293 021924 Software 1
"ClientID" 字段是两者之间相似的字段。
这将创建一个名为 myNewTableName
的新 table,其中包含来自两个 table 的每个 clientId 的数据。新创建的 table 的列数据类型将与原始列中的列相同。
SELECT [a].[ID] AS [aID]
, [a].[ClientID]
, [a].[ClientName]
, [a].[URL]
, [a].[SoftwareID]
, [b].[ID] AS [bID]
, [b].[Username]
, [b].[Email]
, [b].[Phone]
, [b].[Software]
INTO [myNewTableName]
FROM [a]
INNER JOIN [b]
ON [a].[ClientID] = [b].[ClientID]
如果您不想永久 table 包含此信息,因为它经常更改,但希望能够一起查看和查询这些列,请尝试制作视图(这可能是您想要的而不是另一个带有冗余数据的table。
GO
CREATE VIEW [dbo].[vw_myViewName] AS
SELECT [a].[ID] AS [aID]
, [a].[ClientID]
, [a].[ClientName]
, [a].[URL]
, [a].[SoftwareID]
, [b].[ID] as [bID]
, [b].[Username]
, [b].[Email]
, [b].[Phone]
, [b].[Software]
FROM [a]
INNER JOIN [b]
ON [a].[ClientID] = [b].[ClientID]
GO
然后您可以 select 视图中的信息,就像使用任何普通 table 一样,但它会 运行 查询并向您显示结果。使用以下命令查询您的新视图:
SELECT *
FROM [dbo].[vw_myViewName]