我想从两个具有一个相似列的表中获取数据。
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;
你能给我正确的解决方案
答案 0 :(得分:2)
通过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
答案 1 :(得分:-1)
尝试以下
SELECT
A.X,
B.Y,
A.Z,
A.A,
A.B
FROM
A,
B
WHERE A.Y=B.Y AND A.Y=48
AND A.Z=B.Z AND A.Z=73
AND A.A=B.A AND A.A=58
AND A.B=B.B AND A.B=11;