SQL Server如何在这种情况下使用单个SELECT查询?

时间:2015-05-11 16:55:47

标签: sql-server

我在两个表上执行SELECT,选择取决于表格'主要ID,所以我希望每个查询最多1个结果。我想将查询合并到一个SELECT语句中。我认为我应该使用RIGHT(或者左边)OUTER JOIN这样做,但这对我来说并不适合。有什么建议吗?

  Table A             Table B
    ---------          ----------
    ID (pk) | AAttr    ID (pk) | BAttr

    SELECT AAttr, BAttr 
    FROM A 
    RIGHT OUTER JOIN B
      ON B.ID = 1
    WHERE A.ID = 1

*编辑包含样本案例

例如,如果表格包含第一组数据并查询ID为1,我希望:

[null, 'b']

对于第二组数据并查询ID 1,我期待:

['a', null]

对于第三组数据并查询ID 1,我希望:

['a', 'b']


Table A   Table B 
--------  --------
2 | a     1 | b
3 | c     4 | d

Table A   Table B 
--------  --------
1 | a     2 | b
3 | c     4 | d

Table A   Table B 
--------  --------
1 | a     1 | b
3 | c     4 | d

2 个答案:

答案 0 :(得分:1)

当您加入表格时,您需要通过公共列将它们相互关联。在这种情况下,ID。

SELECT a.AAttr, b.BAttr
    FROM a
        LEFT JOIN b
            ON a.ID = b.ID
    WHERE a.ID = 1;

答案 1 :(得分:1)

如果每个表中的ID不相关,并且您想要组合两个不相关的select语句,请尝试使用

select
    (SELECT top 1 AAttr FROM A where ID = 1) as AAttr, 
    (SELECT top 1 BAttr FROM B where ID = 1) as BAttr