【问题标题】:MYSQL doesn't recognize field when I use RIGHT JOIN, but recognizes when I use NATURAL JOINMYSQL 在我使用 RIGHT JOIN 时无法识别字段,但在我使用 NATURAL JOIN 时识别
【发布时间】:2013-04-22 19:08:14
【问题描述】:

当我写的时候查询按预期执行:

SELECT id, day2.count - day1.count AS diff
FROM day1 NATURAL JOIN day2;

但我真正想要的是正确的加入。写的时候,

SELECT T1.id, day2.count - day1.count AS diff
FROM day1 RIGHT JOIN day2 AS T1
ON day1.id = day2.id

它说它无法识别字段列表中的 day2.count。 (另外,我不知道第二个查询是否应该是RIGHT OUTER JOIN,但是这种情况下的结果是一样的。)

我觉得我错过了一些简单的东西。

编辑:以下是定义:

第 1 天

id bigint(8) NOT NULL
count bigint(21) NOT NULL

第二天

(与第 1 天相同)

想法是 day2 表中可能有新的 id,而 day1 中没有。

【问题讨论】:

标签: mysql sql right-join


【解决方案1】:

你过度设计了它。从 where 子句中取出“as t1”。

【讨论】:

  • 并将T1.id 更改为day2.id 以匹配。
  • 嗯。我只包括 T1,因为它说“字段列表中的 id 不明确”或类似的东西。
  • 好的。我猜 day2.id 更有意义。谢谢。
  • 您可以使用 T1,但是您必须在 on 子句和 select 以及 where 和 group by 中使用它。换句话说,该表现在命名为 t1,您需要始终这样引用它。
【解决方案2】:

使用别名或表名。

SELECT day2.id, day2.count - day1.count AS diff
FROM day1 RIGHT JOIN day2
ON day1.id = day2.id

【讨论】:

    猜你喜欢
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2021-03-16
    • 1970-01-01
    • 2022-12-20
    相关资源
    最近更新 更多