【问题标题】:Natural Join is not returning blank rows自然连接不返回空白行
【发布时间】:2015-04-07 11:48:54
【问题描述】:

我有下表及其列:

  1. 包含 actor_id(主键)、first_name、last_name、last_update 作为列的 ACTOR
  2. FILM_ACTOR 包含 actor_id(主键)、film_id(主键)、最后更新为列

两个表中的 Actor_id 具有相同的数据类型和相等的值。

我在 SQL 工作台中编写了以下 MySQL 查询:

select actor_id, first_name, film_id from actor natural join film_actor;

但它返回零行或空白行。为什么?

【问题讨论】:

  • 尝试左连接,看看是否有帮助
  • 但是为什么 Natural Join 没有返回任何结果。如果我只想使用自然连接怎么办

标签: mysql natural-join


【解决方案1】:

在 MySQL 中,NATURAL JOIN 是一种与 INNER 或 LEFT JOIN 执行相同任务的连接,其中 ON 或 USING 子句引用要连接的表共有的所有列。

因此,在您的情况下,它将尝试加入您可能不想要的 actor_id 和 last_update 列。我建议您使用如下 INNER JOIN:

SELECT actor_id, first_name, film_id 
FROM actor a INNER JOIN film_actor f 
ON a.actor_id = f.actor_id;

【讨论】:

    【解决方案2】:

    对连接列使用内部连接和引用。

    select actor_id, first_name, film_id from actor inner join film_actor using (actor_id)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多