Mysql on和where的區別

2021-09-29 16:29:37 字數 1373 閱讀 6544

on不僅僅可以作為表的連線,也可以過濾條件。

select user_name ,dept_name from `user` as u join department as d 

on u.id>1

on和where的主要區別在於,on是執行在join語句之前,where是執行在join語句之後。

join語句做的操作是加入外部行,比如說left,right,full連線操作加入的不符合連線條件的行。

在進行from語句的連線操作時

select user_name ,dept_name from `user` as u join department as d
查詢結果:

yyf	運維

yyf 開發

jam 運維

jam 開發

amy 運維

amy 開發

tomy運維

tomy開發

並沒有將外部列加入。

在使用完left語句後

select user_name ,dept_name from `user` as u left  join department as d 

on u.dept_id=d.id

yyf	運維

jam 運維

amy 開發

tomy null

所以是join語句加入了外部列。

on

select user_name ,dept_name fromuseras u left join department as d

on u.dept_id=d.id and u.id<4

結果:

yyf	運維

jam 運維

amy 開發

tomy

where

select user_name ,dept_name from `user` as u left  join department as d 

on u.dept_id=d.id where u.id<4

結果:

yyf	運維

jam 運維

amy 開發

很明顯on是執行在join語句之前,where是執行在join語句之後。所以他們的區別在於對外部列的過濾。如果沒有新增外部列,兩者的效果是一樣的;

Mysql ON 子句和 USING 子句

mysql 中聯接 sql 語句中,on 子句的語法格式為 table1.column name table2.column name。當模式設計對聯接表的列採用了相同的命名樣式時,就可以使用 using 語法來簡化 on 語法,格式為 using column name 例如 select f.c...

Mysql ON子句和USING子句

mysql on子句和using子句 mysql 中聯接sql語句中,on子句的語法格式為 table1.column name table2.column name。當模式設計對聯接表的列採用了相同的命名樣式時,就可以使用 using 語法來簡化 on 語法,格式為 using column na...

Mysql ON子句和USING子句

mysql on子句和using子句 mysql 中聯接sql語句中,on子句的語法格式為 table1.column name table2.column name。當模式設計對聯接表的列採用了相同的命名樣式時,就可以使用 using 語法來簡化 on 語法,格式為 using column na...