左连接没有右表的多行

Fil*_*son 4 sql sql-server teradata

我有两张桌子(UserSalary).我想做一个left joinUserSalary.对于每个用户,我想要他们的名字和工资.如果他们没有工资,那么该领域可以留空.到目前为止,我们需要的是左连接.但我只想要每个用户一行.由于某些缺陷,一个用户可以有几个工资(见表薪水).我只想要每个用户一行,可以随机选择(或前1).我怎么做?预期的输出显示在底部.

用户表:

User Name
1    Adam
2    Al
3    Fred
Run Code Online (Sandbox Code Playgroud)

薪资表

User  Salary
1     1000
2     2000
2     2000
Run Code Online (Sandbox Code Playgroud)

预期表格:

User Name  Salary
1    Adam  1000
2    Al    2000 
3    Fred  null
Run Code Online (Sandbox Code Playgroud)

Mat*_*att 6

改变UserUseridUser在SQL中的保留字

SELECT u.Userid, u.Name, MAX(S.Salary)
FROM Usertable u
LEFT JOIN Salarytable s ON u.Userid = s.userid
GROUP BY u.userid, u.name
Run Code Online (Sandbox Code Playgroud)

SQL小提琴:http://sqlfiddle.com/#!6/ce4a8/1/0


Rob*_*ert 5

试试这个:

select U.User, U.Name, min(S.Salary)
from UserTable U
left join SalaryTable S on S.User = U.User
group by U.User, U.Name
Run Code Online (Sandbox Code Playgroud)