下面的两个查询输出相同的结果。我理解第一个,但有人可以解释第二个查询是如何工作的吗?
SELECT p0_.name AS name_0
FROM patient p0_ INNER JOIN consultant c1_
ON c1_.id = p0_.consultant_id
WHERE c1_.id=1;
SELECT p0_.name AS name_0
FROM patient p0_ INNER JOIN consultant c1_
ON (c1_.id = 1)
最佳答案
这两个查询给出相同的结果只是巧合,只是在 patients
表中只有 1 行的情况下。
这些查询是不同的,并给出不同的结果。
请检查这个简单的演示:http://sqlfiddle.com/#!9/1987a/1
CREATE TABLE patient (
patient_id int,
name varchar(20),
consultant_id int
);
insert into patient values(1,'Patient 1', 1);
insert into patient values(2,'Patient 2', 2);
CREATE TABLE consultant(
id int
);
insert into consultant values(1),(2);
SELECT p0_.name AS name_0
FROM patient p0_ INNER JOIN consultant c1_
ON c1_.id = p0_.consultant_id
WHERE c1_.id=1;
| name_0 |
|-----------|
| Patient 1 |
SELECT p0_.name AS name_0
FROM patient p0_ INNER JOIN consultant c1_
ON (c1_.id = 1)
| name_0 |
|-----------|
| Patient 1 |
| Patient 2 |
关于mysql - 没有 where 子句的连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46041920/