警告:这是一个相当菜鸟的软问题,出自几天前刚刚开始摆弄 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/