当前位置: 首页 > 面试题库 >

INNER JOIN ON与WHERE子句

茅涵映
2023-03-14
问题内容

为简单起见,假设所有相关字段均为NOT NULL

你可以做:

SELECT
    table1.this, table2.that, table2.somethingelse
FROM
    table1, table2
WHERE
    table1.foreignkey = table2.primarykey
    AND (some other conditions)

要不然:

SELECT
    table1.this, table2.that, table2.somethingelse
FROM
    table1 INNER JOIN table2
    ON table1.foreignkey = table2.primarykey
WHERE
    (some other conditions)

这两个工作方式MySQL是否相同?


问题答案:

INNER JOIN 是您应该使用的ANSI语法。

通常认为它更具可读性,尤其是当您连接许多表时。

OUTER JOIN只要有需要,也可以轻松地将其替换为。

WHERE语法更关系模型为主。

两个表JOINed的结果是表的笛卡尔积,将对其应用过滤器,该过滤器仅选择连接列匹配的那些行。

使用WHERE语法更容易看到这一点。

以您的示例为例,在MySQL(通常在SQL中)中,这两个查询是同义词。

另请注意,MySQL也有一个STRAIGHT_JOIN子句。

使用此子句,您可以控制JOIN顺序:在外部循环中扫描哪个表,在内部循环中扫描哪个表。

您无法使用WHERE语法在MySQL中控制此功能。



 类似资料:
  • 问题内容: 有什么区别,每个应该有什么区别? 如果我正确理解该理论,则查询优化器应该可以互换使用。 问题答案: 它们不是同一件事。 考虑以下查询: 和 第一个将返回订单及其订单号的行(如果有)。第二个将返回所有订单,但只有订单将具有与之关联的任何行。 使用,子句 实际上是 等效的。但是,仅仅因为它们在功能上相同而产生相同的结果,并不意味着这两种子句具有相同的语义。

  • 我可以通过两种方式来实现这一点,使用where子句或join查询,在spark SQL中哪个更快?为什么?Where子句比较列添加、选择那些记录还是在列本身上联接,哪个更好?

  • 本章提供了有关如何使用JDBC应用程序从表中选择记录的示例。 这将在从表中选择记录时使用WHERE子句添加其他条件。 在执行以下示例之前,请确保您具备以下示例 - 要执行以下示例,您可以使用实际用户名和密码替换用户名和密码。 您的MySQL或您正在使用的任何数据库已启动并正在运行。 所需的步骤 (Required Steps) 使用JDBC应用程序创建新数据库需要以下步骤 - Import the

  • 在MariaDB中,子句与,,和语句一起使用来选择或更改想要更改的满足指定特定行记录。 它是一个在表名后面出现的语句。 语法 注意:子句是一个可选的子句。它可以和,,,运算符一起使用。 1. WHERE子句与单一条件 示例: 我们有一个表,里边有一些数据。假设要查询表中的小于的所有记录。 执行上面查询语句,得到以下结果 - 2. WHERE子句与AND条件 为了方便演示,这里再插入一条数据 - 当

  • 主要内容:语法,实例SQLite的 WHERE 子句用于指定从一个表或多个表中获取数据的条件。 如果满足给定的条件,即为真(true)时,则从表中返回特定的值。您可以使用 WHERE 子句来过滤记录,只获取需要的记录。 WHERE 子句不仅可用在 SELECT 语句中,它也可用在 UPDATE、DELETE 语句中,等等,这些我们将在随后的章节中学习到。 语法 SQLite 的带有 WHERE 子句的 SELECT

  • 主要内容:Oracle WHERE子句简介,Oracle WHERE示例在本教程中将学习如何使用Oracle 子句来指定过滤的条件返回符合查询条件的行记录。 Oracle WHERE子句简介 子句指定语句返回符合搜索条件的行记录。下面说明了子句的语法: 子句出现在子句之后但在ORDER BY子句之前。在WHERE关键字之后是 - 它定义了返回行记录必须满足的条件。 除了语句之外,还可以使用DELETE或UPDATE语句中的子句来指定要更新或删除的行记录。 Oracle