【问题标题】:SQL querying via multiple, interrelated tables通过多个相互关联的表进行 SQL 查询
【发布时间】:2015-05-17 15:38:28
【问题描述】:

我有两张桌子:

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:这很傻,但是对查询 1 的响应会在 JDBC 中被正确接受/处理吗?

【问题讨论】:

  • 请正确标记您的问题。您真正使用的是什么数据库,MySQL 还是 SQL Server?

标签: mysql sql sql-server jdbc


【解决方案1】:

我不确定 key 是 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

【讨论】:

  • 键是名字,奇怪的是:) 所以是的,第二个选项就是我要找的。非常感谢!
【解决方案2】:

如果SNo是主键,

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

如果Name是主键,

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

【讨论】:

    【解决方案3】:

    select tableB.* from tableB Inner Join tableA on tableB.name = tableA.name

    这里是¨sql fiddle

    【讨论】:

      【解决方案4】:

      查询一个类似于

      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 将任何查询传递到您的服务器,并且不应在内部干扰您的查询。

      【讨论】:

      • 两个表之间的 SNo 字段没有连接
      • @DevelopmentIsMyPassion “2 个表之间的连接”是什么意思 - ?
      • 我的意思是没有被 sno 列连接
      • 这就是 OP 不清楚的地方:主键是什么?我首先假设 SNo,但它也可能是 Name。进行编辑...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      相关资源
      最近更新 更多