在这种情况下如何获得结果?

时间:2018-09-25 09:27:41

标签: sql sql-server database

假设,我们有两个表:-分支用户

分支机构:

BranchCode  |  BranchName  | IsActive  |
----------------------------------------
   1        |    aaa       |   0       |
----------------------------------------
   2        |    bbb       |    1      |
---------------------------------------
   3        |    ccc       |     0     |

用户:

UserId   |  Name  |
-------------------
  333     |  jjjj |
-------------------
  444      |  kkkk|
-------------------

我们希望将结果选择为

MemberId
--------
2 - 333
--------
2 - 444
-------

这意味着,我们为具有isactive = 1的用户使用分支代码

由于表没有关系,我在检索结果集时遇到问题,有没有办法按预期方式获得结果?

3 个答案:

答案 0 :(得分:2)

使用CROSS JOIN

SELECT b.branchcode, u.UserId   
FROM brach b CROSS JOIN
     (SELECT UserId FROM User u) u
WHERE b.IsActive = 1;

答案 1 :(得分:1)

SELECT CONCAT(b.branchcode,' - ', u.UserId) MemberId FROM User u,brach b WHERE b.IsActive = 1;

答案 2 :(得分:0)

您可以将RIGHT OUTER JOIN用作:

select concat(b.branchcode,'-',u.userid) as MemberId
  from branch b
 right outer join "user" u
    on b.isactive = 1;

MemberId
--------
2 - 333
2 - 444

p.s。用户是MSSQL中的保留关键字,因此我改用了表"user"

SQL Fiddle Demo