【问题标题】:Sql: Selecting from other tablesSql:从其他表中选择
【发布时间】:2015-06-11 15:37:49
【问题描述】:

我有 2 张桌子。球员和统计数据。播放器具有以下字段:姓名、年龄、出生日期和 SSN。 Stats 具有以下字段:Tackles、Goals、Assists 和 SSN。 SSN 是外键。如何编写查询以查找 DOB >= '1994' 的球员的统计数据。 DOB 不是外键,我想知道它是如何工作的。

【问题讨论】:

  • 我认为您可以执行类似 SELECT player.* from player, stats WHERE player.SSN = products.ssn AND DOB >= 1994 的操作,如果您想要一个不使用 Join 的语句。加入当然是更标准的选择。

标签: mysql sql database join foreign-keys


【解决方案1】:

这是一个简单的加入命令。

SELECT * FROM Stats 
INNER JOIN Player
On Player.SSN = Stats.SSN
WHERE DOB > 1994

这里有一个问题,因为您暗示 DOB 是一个字符串,而不是带有这些引号的日期时间或整数。你不能像你试图做的那样将字符串比较为数字。如果 DOB 只是年份,例如1994,然后DOB >= 1994 可以工作,如果它是datedatetime,你需要使用Datetime 等价物。

【讨论】:

    【解决方案2】:
    SELECT * FROM Player INNER JOIN Stats ON Player.SSN = Stats.SSN WHERE Player.DOB >= '1994-01-01'
    

    如果您只需要特定字段,请指定这些而不是 SELECT *

    【讨论】:

    • 需要使用>= 而不是>
    【解决方案3】:
    select player.name, stats.tackles, stats.goals, stats.assists
    from player inner join stats on player.ssn = status.ssn
    where year(player.dob) >= 1994
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      相关资源
      最近更新 更多