我想从具有一个相似列的两个表中获取数据。

Table A

x   y   z  a  b

1   48 36  d5 8d
2   78  36 2t 15
3   99  54  s5  14
4   48  73  58  11



Table B

x   y   z  a  b

1   48 95  d9 69
2   98  36 3c vv
3   93  39  df  1bb
4   48  73  58  11


我想从列y,z,b的表中获取y=48,z=73,a=58,b=11值。
我像这样使用join query,但是它不起作用。

Select x,y,z,a,b from A join B in A.y=B.y=48 and A.z=B.z=73 and A.a=B.a=58 and A.b=B.b=11;


你能给我合适的解决方案吗

最佳答案

连接是通过ON关键字定义的,而不使用IN。您还将混合联接条件和过滤条件。 a=b=x在SQL中不起作用。

您还需要完全限定选择列表中的列,否则您将得到一个错误,即列名不明确。

Select a.x, a.y, a.z, a.a, a.b
from A
  join B on A.y=B.y
        and A.z=B.z
        and A.a=B.a
        and A.b=B.b
where a.y = 48
  and a.z = 73
  and a.a = 58
  and a.b = 11


您的评论“具有一个相似的列”似乎表明,实际上连接应该仅通过列x完成,而不是基于要过滤的所有列:

因此,您实际上可能想要:

Select a.x, a.y, a.z, a.a, a.b
from A
  join B on a.x = b.x -- only use `x` for the join condition
where a.y = 48
  and a.z = 73
  and a.a = 58
  and a.b = 11

10-07 13:28
查看更多