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

这两种联接表方法之间的区别?

尹凌龙
2023-03-14
问题内容

考虑我们有两个表,UsersPostsuser_idPosts表中的外键,并且是表中的主键Users

这两个SQL查询之间有什么区别?

select user.name, post.title 
  from users as user, posts as post 
 where post.user_id = user.user_id;

select user.name, post.title 
  from users as user join posts as post using user_id;

问题答案:

除语法外,对于小片段,它们的工作原理完全相同。但是,如果有可能,请始终使用ANSI-JOIN编写新查询。

至于语义上,逗号用于在两个表之间生成CARTESIAN乘积,这意味着生成表A中的所有记录与表B中的所有记录的矩阵,因此具有4和6条记录的两个表分别生成24个记录。然后,使用WHERE子句,可以从此笛卡尔积中选择实际需要的行。但是,MySQL实际上并没有遵循并建立这个庞大的矩阵,但是从语义上讲,这就是它的意思。

JOIN语法是ANSI标准,可以更清楚地定义表之间的交互方式。通过将该ON子句放在旁边JOIN,可以使两个表链接在一起。

从功能上讲,它们将对您的两个查询执行相同的操作。开始使用其他[OUTER]JOIN类型时会有所不同。

特别是对于MySQL,逗号符号确实有一个区别

STRAIGHT_JOIN与JOIN相似,不同之处在于总是在右表之前读取左表。这可以用于联接优化器将表以错误的顺序放置的那些(很少)情况。

但是,利用这种差异是不明智的。



 类似资料:
  • 问题内容: 我可能现在应该知道这一点,但是以下两个语句之间的区别是什么? 嵌套联接: 比较传统的联接: 问题答案: 好吧,这是操作的顺序。 可以改写为: 因此,基本上,首先根据连接条件:t3将t2与t3左连接,然后在table2_ID = table1_ID上与t2对IN1进行t1内连接。 在第二个示例中,首先将INNER JOIN t1与t2组合在一起,然后在条件table2_ID = tabl

  • 下面是一些React/JS代码:有区别吗: 和 非常感谢

  • 问题内容: 在Java中,我可以通过以下方式初始化具有预定义内容的数组: 或通过: 本质上,这两种方式之间有什么区别吗?它们在Java中是否完全相同?哪种方法更好,为什么呢? 问题答案: 就您而言,没有区别。 当您不将变量分配给变量并进行内联创建时,将会有所 不同。 例如,考虑有一个方法,它以数组作为参数。 您的情况: 现在在其他情况下调用它时可以看到区别。

  • 我一直在用sql计算“游戏”。第一种方法是这样的: 第二个是这样的: 出于所有目的,只包含、、和列。 然而最终大约是10,而最终是50,显然这两种计数方法并不等同或有其他原因,但我正在试图弄清楚:这些之间的差异是什么原因?

  • 嗨,我一直在使用android中的datepickerdialog,我得到了第一个O/P对话框。然而,如何获得像DatePickerDialog这样的第二个图像。是否纯粹依赖于Android OS版本?我正在使用6.0设备来测试它。 我使用的代码是

  • 问题内容: 抱歉,我的问题是否愚蠢,没关系。但是我只想知道在这两种情况下会发生什么。 两者都只给出相同的结果。但是我知道有一些原因。我不知道这一点。这两个条件有什么区别? 问题答案: 它们之间没有任何区别。许多程序员使用第二种方法只是为了确保他们没有得到。就这样。