从SQL Server中的两个表中检索数据

时间:2014-02-11 07:58:32

标签: sql sql-server

我正在尝试从SQL Server中的两个表中检索数据。

以下是我的两张桌子。

  1. Registration

    用户名姓名年龄 阿伦20 bb Balu 15 ss Sai 25

  2. Marks

    dt用户标记 2014-02-10 aa 50 2014-02-11 aa 55 2014-02-09 bb 45

  3. 我需要显示如下所示的选择。

    输出:

    Name    Username    Date        Marks
    Arun    aa      2014-02-11      55
    Balu    bb      2014-02-09      45
    

    请帮忙

    提前致谢。

6 个答案:

答案 0 :(得分:1)

尝试此查询!

Select r.Name,r.Username,m.Date,m.Marks from Registration r left join Marks m on r.Username=m.userid

答案 1 :(得分:0)

请你试试这个:

select r.name
     , r.username
     , max(m.marks) 
  from Registration r 
  join marks m 
    on r.username=m.username 
 group by 
       m.username
     , m.marks
     , r.name 

希望这有帮助。

答案 2 :(得分:0)

我认为这就是你所期待的......

 select substr(reg.username,4,length(reg.username)) as Name,
        min(substr(reg.username,1,2)) as Username,
        max(marks.dt) as Date,
        max(marks.mark) as Marks
        from registration reg, marks marks
        where marks.userid = substr(reg.username,1,2)
group by substr(reg.username,4,length(reg.username));

答案 3 :(得分:0)

您需要执行类似

的RIGHT JOIN查询
SELECT Reg.UserName, Reg.Name, Marks.dt, Marks.mark  
FROM Reg
RIGHT JOIN Marks
ON Reg.Username=Marks.userid;

这样做是根据两个表之间的公共字段(即您的用户ID)匹配两个表中的所有记录。由于您可以在标记表上为每个用户ID创建多个标记记录,因此我们需要RIGHT联接,它将从该表中获取所有匹配的条目。

如果您需要一对一的关系,请使用INNER JOIN,否则请使用LEFT或RIGHT查询

答案 4 :(得分:0)

你可以试试这个:

select R.Name,R.Username, M.dt, M.Marks from Registration R inner join 
Marks M on  R.Username = M.Username

希望这会对你有帮助......

答案 5 :(得分:0)

请尝试

select r.Username,r.Name,m.dt as 'Date',m.mark as 'Marks' from Registration r join Marks m on r.Username= m.userid