mysql - SQL - JOIN 和比较不同表中的两行有什么区别?

标签 mysql sql

警告:这是一个相当菜鸟的软问题,出自几天前刚刚开始摆弄 SQL 的人。

所以我尝试使用 SQL Fiddle ( http://sqlfiddle.com/ ) 自学一些基本的 SQL。它只是一个基本的 SQL 表生成器,允许我测试一些查询。如果您愿意,您可以使用它快速查看我的表格。

我使用的是 MySQL 5.5.32。

现在,我的表格如下所示:

CREATE TABLE masters (

  name VARCHAR(15),
  num INT,
  riches VARCHAR(15),
  age INT,

  PRIMARY KEY (num)

  );

CREATE TABLE slaves (

  slavename VARCHAR(15),
  num INT,
  slaveage INT,

  FOREIGN KEY (num) REFERENCES masters(num)

  );


INSERT INTO masters
VALUES ("Pharao", 0, "Somewhat", 51);

INSERT INTO masters
VALUES ("Cleo", 10, "Loads", 29);

INSERT INTO masters
VALUES ("Dracula", 15, "Nice estate", 847);


INSERT INTO slaves
VALUES ("LoneSlave", 0, 29);

INSERT INTO slaves
VALUES ("SexyMan", 10, 21);
INSERT INTO slaves
VALUES ("SexyWoman", 10, 19);

INSERT INTO slaves
VALUES ("Zombie", 15, 72);
INSERT INTO slaves
VALUES ("Wolfman", 15, 51);
INSERT INTO slaves
VALUES ("Frankenstein", 15, 51);

现在,我刚刚开始了解 JOIN。

这是我的问题;两者有什么区别:

SELECT * FROM masters JOIN slaves ON masters.num = slaves.num;

还有...

SELECT * FROM masters, slaves WHERE masters.num = slaves.num;

据我所知,它们产生完全相同的结果。

有人可以向我解释一下这些结果之间有什么区别(如果有)吗?

我的意思是,这只是一种偏好,还是其中一个比另一个有一些明显的优势?

(PS:我会使用 soft-question 标签,但在我获得 1500 次代表之前,这显然是叛国行为。)

最佳答案

它们的工作原理相同(甚至性能也相同)。

第一个称为“显式连接”,第二个称为“隐式连接”。但考虑到效果和性能,它们是相同的。

更多信息请点击:Explicit vs implicit SQL joins

关于mysql - SQL - JOIN 和比较不同表中的两行有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26439456/

相关文章:

具有不同主键值的 MYSQL 查询重复?

mysql - 为什么MySql只保存字符串的第一个字符? (我使用的是Python 3)

mysql - ORDER BY 两列,但不按时间排序?

mysql - 如何正确编写此 SQL 语句

php - 大数据 : Handling SQL Insert/Update or Merge best line by line or by CSV?

mysql 2 行中的多个值

PHP 自动完成与 Oracle 错误

java - 为什么请求无效转换错误代码 : 17132?

mysql - 根据连接表的字段过滤 MySQL Select

sql - 将 SQL Server 连接限制为特定 IP 地址