mysql - 没有 where 子句的连接查询

标签 mysql sql

下面的两个查询输出相同的结果。我理解第一个,但有人可以解释第二个查询是如何工作的吗?

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/

相关文章:

java - 数据库和 Web 应用程序之间的日期不一致

mysql - 无法在 Netbean 中加载身份验证插件 'caching_sha2_password'

SQL 查询连接四个表

java - Db2 表的 DDL 生成

Mysql 将所有表列从 n/a 更新为 NULL

php - 在 Laravel 上将数百万行数据从一个数据库复制到另一个数据库

mysql - tomcat jdbc连接池中缺少连接

php - 如何从登录的现有用户自动更新特定行

c# - SQLBulkCopy 抛出 InvalidOperationException 可空整数

mysql - 删除 MySQL 中除重复行之外的所有重复行?