Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从两个表中获取数据的SQL查询_Sql Server - Fatal编程技术网

Sql server 从两个表中获取数据的SQL查询

Sql server 从两个表中获取数据的SQL查询,sql-server,Sql Server,假设我有一张表,如下所示: 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), ) 我怎样才能得到一个新的表(或结果),它包含了来自这两者的结果。我只关心tblEven

假设我有一张表,如下所示:

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的用户名,其中Userid(of tblEvents)等于Userid(of tblUsers)。因此,最终输出应采用以下格式:

EventId | EventName | UserId | UserName
--------|-----------|--------|---------
        |           |        | 
其中用户名来自tblUsers。 我无法更改任何表上的主键

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

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

您可以阅读有关使用
中创建表
的更多信息,查看SQL中的内部联接,然后尝试下面的查询

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

这会奏效的。使用简单的
内部联接

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

非常基本的问题。寻找
内部连接
令人震惊的基本SQL问题。在使用StackOverflow提问此类问题之前,您至少应该学习SQL的基础知识。@MikeGledhill:那么RTFM问题现在已经脱离主题了?我认为简单的否决票就足够了。。。