SQL通过多个相互关联的表进行查询

时间:2015-05-17 15:38:28

标签: mysql sql sql-server jdbc

我有两张桌子:

Table A:                  Table B:

SNo  Name                 SNo  Name    Std     Talent

1    Amy                  1    Amy      2      Soccer Wonderkid
2    Andy                 2    Andy     3      Street Dance Pro
3    Ben                  3    Asa      4      Kung-Fu Master
                          4    Ben      2      Nerd King
                          5    Chris    4      Hacker Overlord

查询1:如何使用单个SQL语句(必要时嵌套)为表A中具有条目的孩子选择表B中的行?

查询2:这个很傻,但是在JDBC中是否可以正确接受/处理对查询1的响应?

4 个答案:

答案 0 :(得分:1)

我不确定密钥是SNo还是Name,因此查询将是

SELECT b.*
FROM tableA a
LEFT JOIN tableb b
ON a.name = b.name

SELECT b.*
FROM tableA a
LEFT JOIN tableb b
ON a.sno = b.sno

答案 1 :(得分:0)

查询一个就像是

SELECT a.name, b.talent from a,b where a.SNo = b.SNo

编辑working SQL Fiddle

也可能是:

SELECT a.name, b.talent from a,b where a.Name = b.Name

取决于两个表的实际键是什么。

回答问题2:为什么不呢? JDBC将任何查询传递给您的服务器,不应在内部干扰您的查询。

答案 2 :(得分:0)

如果SNo是主键,

SELECT *
FROM B
WHERE SNo IN (SELECT SNo FROM A)

如果Name是主键,

SELECT *
FROM B
WHERE Name IN (SELECT Name FROM A)

答案 3 :(得分:0)

在tableB.name = tableA.name

上从tableB内部连接tableA中选择tableB。*

这是¨sql fiddle