MySQL中的ON和WHERE都是用于筛选数据的关键字,但它们之间有一些重要的区别。
ON
在使用JOIN连接多个表时,需要使用ON来指定连接条件。这是因为在多个表连接时,不同表之间可能存在相同列名,而如果使用WHERE来进行筛选,则会出现歧义性。
例如,在以下两个表中:
table1:
id | name
---|-----
1 | Tom
2 | Mary
table2:
id | age
---|----
1 | 18
3 | 20
如果要查询两张表中所有记录,且以id作为连接条件,则可以使用以下SQL语句:
SELECT *
FROM table1
JOIN table2
ON table1.id = table2.id;
上述语句中的ON table1.id = table2.id就是指定了连接条件。也就是说,只有当table1和table2中id列的值相同时才会将它们关联起来。
WHERE
与此不同,WHERE通常用于对单个表进行筛选操作。它可以用于选择符合特定条件的行,并根据需要排除其他行。
例如,在以下单个表中:
students:
id | name | grade
---|--------|------
1 | Tom | A
2 | Mary | B
3 | John | C
如果要查找成绩为A或B的学生,则可以使用以下SQL语句:
SELECT *
FROM students
WHERE grade = 'A' OR grade = 'B';
上述语句中的WHERE grade = 'A' OR grade = 'B'就是指定了筛选条件。它会在students表中选择所有成绩为A或B的行。
总之,ON和WHERE都是用于筛选数据的关键字,但它们的使用场景不同。在连接多个表时需要使用ON来指定连接条件,在对单个表进行筛选时需要使用WHERE来指定筛选条件。




