【问题标题】:SQL Join outputting Empty fieldSQL Join 输出空字段
【发布时间】:2019-01-18 16:10:18
【问题描述】:

我需要生成一个查询,该查询从两个表中提取列并输出每个作业的 ID、谁在它上面工作以及花费了多少小时。 t1.c1 = 员工姓名,t2.c1 = JobId,t2.c2 = HoursWorked。

SELECT t2.c1, t1.c1, t2.c2
FROM t1
RIGHT JOIN t2 ON t1.c1 = t2.c1;

这会正确输出 t2.c1 和 t2.c2 但将 t1.c1 留空

【问题讨论】:

  • 尝试简单的 JOIN
  • simple JOIN 在 FROM 子句中抛出语法错误
  • 你能发一个示例数据吗

标签: mysql sql ms-access join select


【解决方案1】:

如果你需要 t1.c1 而不是空值,你应该使用左连接

SELECT t2.c1, t1.c1, t2.c2
FROM t1
LEFT JOIN t2 ON t1.c1 = t2.c1;

或者如果你只寻找完全匹配,你应该使用内连接

SELECT t2.c1, t1.c1, t2.c2
FROM t1
INNER JOIN t2 ON t1.c1 = t2.c1;

【讨论】:

  • 在填充 t1.c1 时,左连接将 t2.c1 和 t2.c2 留空,内连接将所有列留空。
  • 然后更新您的问题添加适当的数据样本.. 和预期的结果请
【解决方案2】:

你也可以不使用任何连接来做到这一点

select T2.JobId,T1.Employeename,T2.HoursWorked from T1,T2;

【讨论】:

    【解决方案3】:

    你的问题不是很清楚,但我想你需要下面的东西(正如你所说的“这输出 t2.c1 & t2.c2 正确但留下 t1.c1 空白”)

    SELECT t2.c1, t1.c1, t2.c2
    FROM t1
    RIGHT JOIN t2 ON t1.c1 = t2.c1
    union
    SELECT t2.c1, t1.c1, t2.c2
    FROM t1
    left JOIN t2 ON t1.c1 = t2.c1
    

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      相关资源
      最近更新 更多