SQL查询从两个表中获取数据[重复]

Posted

技术标签:

【中文标题】SQL查询从两个表中获取数据[重复]【英文标题】:SQL Query to get data from two table [duplicate] 【发布时间】:2015-11-13 17:06:44 【问题描述】:

假设我有一张如下表:

Create table tblEvents
(
Eventid int primary key,
EventName nvarchar(20),
UserId nvarchar(5)
)

第二个表为:

Create table tblUsers
(
Id int primary key,
UserId nvarchar(5),
Username nvarchar(20),
)

我怎样才能得到一个新表(或结果),它结合了两者的结果。我只关心 tblEvents,它应该只显示来自 tblUsers 的 UserName,其中 Userid(of tblEvents) 等于 UserId(of tblUsers)。所以最终的输出应该是下面的格式:

EventId | EventName | UserId | UserName
--------|-----------|--------|---------
        |           |        | 

其中 UserName 来自 tblUsers。 我无法更改任何表的主键。

编辑:UserId 不是 INT,不能用作主外键

【问题讨论】:

非常基本的问题。寻找INNER JOIN technet.microsoft.com/en-us/library/ms191517(v=sql.105).aspx 令人震惊的基本 SQL 问题。在使用 *** 提出此类问题之前,您至少应该学习 SQL 的基础知识。 @MikeGledhill:RTFM 问题现在离题了吗?我认为一个简单的downvote就足够了...... 【参考方案1】:

这将起作用。使用简单的INNER JOIN

SELECT te.EventId , te.EventName , te.UserId , tu.UserName
FROM tblEvents te
INNER JOIN tblUsers tu ON te.UserId=te.UserId

【讨论】:

【参考方案2】:

查看 SQL 中的内部联接并尝试以下查询。

SELECT tblEvents.Eventid, tblEvents.EventName, tblEvents.UserId ,tblUsers. UserName
FROM tblEvents INNER JOIN tblUsers ON tblEvents.UserId=tblUsers.UserId

【讨论】:

【参考方案3】:

查询:

select 
    e.Eventid,
    e.EventName,
    e.UserId,
    u.Username
from  tblEvents e
join tblUsers u on e.UserId = u.UserId

如果你想从中创建一个新表,那么:

select 
    e.Eventid,
    e.EventName,
    e.UserId,
    u.Username
into new_table
from  tblEvents e
join tblUsers u on e.UserId = u.UserId

您可以使用into here 阅读有关creating table 的更多信息

【讨论】:

以上是关于SQL查询从两个表中获取数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

查询从两个表中获取数据并将它们一起返回

如何从两个表中获取数据以进行登录

SQL JOIN

SQL之join

SQL的join使用

sql查询 如何获取查找某ID的一条记录在表中是第几条记录