Sql 如何从查询数据中获取相应的值

Sql 如何从查询数据中获取相应的值,sql,sql-server,Sql,Sql Server,我有如下MSSQL表 Names sno username firstname 1 jim sam 2 raj ravi 3 lion king Marks sno from given 1 raj jim 2 raj lion 3 lion raj 4

我有如下MSSQL表

Names
 sno     username    firstname
   1      jim         sam
   2      raj         ravi
   3      lion        king

Marks
 sno     from        given  
   1      raj         jim
   2      raj         lion
   3      lion        raj
   4      lion        jim   
现在我想显示我的表,如下所示:

Select  [from],
        [given]
  From  Marks
  Where [from] = 'raj'
输出表:

from     given     firstname  
 raj      jim       sam
 raj      lion      king

我怎么能做到呢?我想不出来这两个表之间的共同点是什么?名称。[用户名]字段是否与标记。[给定]字段具有相同的值?我推测它不是[sno]字段,因为没有相同sno的raj/lion/king的匹配项。您的模式不好,您试图比较的内容毫无意义。理想情况下,表将使用公共标识符进行连接。所以,对于Names表,使用NamesID并将其设置为主键。然后,对于Marks表,使用MarksID,并将其设置为主键。然后,如果Marks表引用了一个名称(Names表中的外键),则在其中包含NamesID字段,并从Names表中获取NamesID值。然后,使用诸如
WHERE Marks.NameID=Names.NameID
.noooooo!之类的语句进行连接!您有一个名为FROM的列?先生,你疯了吗?我现在告诉你,这会给你带来问题。不要为你的列使用保留名称。这是个坏主意。@user2787300更改你的列名@赞恩:我肯定已经按照你的建议修改了我的列名。非常感谢你。
select marks.from, marks.given, names.fistname
  from marks
  join names
    on marks.given = names.username
 where marks.from = 'raj'