我无法弄清楚如何连接这两个表并获得我想要的NULL值的结果。 我玩LEFT JOINRIGHT JOINFULL OUTER JOIN ......但是无法让它发挥作用。 请看下面的内容。

表1

NameID  Name
1       N1
2       N2
3       N3
4       N4
5       N5

表2

NameID  AnotherID   Value
1       AID-111     1000
2       AID-222     2000
2       AID-222     3000
3       AID-333     4000
4       AID-444     5000


Select ...
JOIN Table1 and Table2
WHERE AnotherID = 'AID-222' 

这是我想要的结果:

NameID  Name    AnotherID   VALUE
1       N1      NULL        NULL
2       N2      AID-222     2000
3       N3      AID-222     3000    
4       N4      NULL        NULL    
5       N5      NULL        NULL

请帮忙。 谢谢!

===============>>#1 票数:4 已采纳

您没有解释为什么要返回2000而不是3000的值,但是您可以使用LEFT JOIN和子查询来获得结果:

select t1.nameid,
  t1.name,
  t2.anotherid,
  t2.value
from table1 t1
left join
(
  select nameid, anotherid, min(value) value
  from table2
  where anotherid = 'AID-222'
  group by nameid, anotherid
) t2
  on t1.nameid = t2.nameid;

请参阅SQL Fiddle with Demo 这给出了结果:

| NAMEID | NAME | ANOTHERID |  VALUE |
--------------------------------------
|      1 |   N1 |    (null) | (null) |
|      2 |   N2 |   AID-222 |   2000 |
|      3 |   N3 |    (null) | (null) |
|      4 |   N4 |    (null) | (null) |
|      5 |   N5 |    (null) | (null) |

===============>>#2 票数:0

我们也可以使用完全加入,它也会给你答案:

tableA t1中选择t1.nameid,t1.name,t2.anotherid,t2.value

full outer join
(
    select nameid,anotherid,value from tableB 
    where anotherid IN ('AID-222','AID-333') 

) t2 
on t1.nameid = t2.nameid;

  ask by Milacay translate from so

未解决问题?本站智能推荐: