sqlon
A. sql的on有什麼用
on 是關聯條件,『當...的時候』的意思
作用類似WHERE.
只有用join 的時候 才用.
有:
inner join ...on
left outer join ...on
right outer join ...on
幾種情況.
如:
SELECT *
FROM TABALE1 A
LEFT OUTER JOIN TABLE2 B ON A.COL1=B.COL2.
B. 這SQL語句里的ON 是什麼意思啊
on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。
on、where、having這三個都可以加條件的子句中,on是最先執行,where次之,having最後。有時候如果這先後順序不影響中間結果的話,那最終結果是相同的。但因為on是先把不符合條件的記錄過濾後才進行統計,它就可以減少中間運算要處理的數據,按理說應該速度是最快的。
根據上面的分析,可以知道where也應該比having快點的,因為它過濾數據後才進行sum,所以having是最慢的。但也不是說having沒用,因為有時在步驟3還沒出來都不知道那個記錄才符合要求時,就要用having了。
在兩個表聯接時才用on的,所以在一個表的時候,就剩下where跟having比較了。在這單表查詢統計的情況下,如果要過濾的條件沒有涉及到要計算欄位,那它們的結果是一樣的,只是where可以使用rushmore技術,而having就不能,在速度上後者要慢。
(2)sqlon擴展閱讀
SQL中on條件與where條件的區別:
where條件是在臨時表生成好後,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。
在多表聯接查詢時,on比where更早起作用。系統首先根據各個表之間的聯接條件,把多個表合成一個臨時表後,再由where進行過濾,然後再計算,計算完後再由having進行過濾。由此可見,要想過濾條件起到正確的作用,首先要明白這個條件應該在什麼時候起作用,然後再決定放在那裡。
join過程可以這樣理解:首先兩個表做一個笛卡爾積,on後面的條件是對這個笛卡爾積做一個過濾形成一張臨時表,如果沒有where就直接返回結果,如果有where就對上一步的臨時表再進行過濾。
C. 關於SQL中join on 的用法神馬的
join on 就是表連接.
select * from table1 as t1 join table2 as t2 on(t1.a= t2.b) where t1.c = x order by t1.d desc;
等價於
select * from table 1 as t1 ,table2 as t2 where t1.a = t2.b and t1.c = x order by t1.d desc;
2個SQL語句對於資料庫來說是一樣的,執行計劃都沒有區別...
你可以試一下.
D. SQL左右連接中的on and和on where的區別
原先一直對SQL左右連接中的on and和on where的區別不是太了解,直到在網上看到了下面這段話才豁然開朗。
在使用left join時,on and和on where條件的區別如下:
1、on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。
2、where條件是在臨時表生成好後,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉,on後的條件用來生成左右表關聯的臨時表,where後的條件對臨時表中的記錄進行過濾。
E. SQL語句SET FMTONLY {OFF/ON}在什麼情況下使用到
SET FMTONLY 的設置是在執行或運行時設置,而不是在分析時設置。 當 SET FMTONLY 為 ON 時,將不對行進行處理,也不將行作為請求的結果發送到客戶端。
F. sql語句中的left join on 什麼意思啊 如何用
LEFTJOIN關鍵字會從左表那裡返回所有的行,即使在右表中沒有匹配的行。意思就是向左關聯某個表記錄,以左邊的那個表的記錄為基準,通過關聯條件,將關聯表的相關符合要求的記錄一起找出來,找出來的記錄條數就是左邊表的記錄數
具體用法如下:
SELECT column_name(s)
FROM table_name1
LEFTJOINtable_name2
ONtable_name1.column_name=table_name2.column_name
拓展材料:
使用"left join...on"的作用在於從t1表中返回所有行,如果t2表中沒有相應的記錄則補「null」。詳見下圖
G. SQL中的ON和WHERE有什麼區別啊謝謝
本質上的區別不是很清楚.
實際應用中的,比較了解,on 條件是用於外鍵連接,where 條件是用於篩選紀錄.
on可適用於多條記錄,asp批量處理時候常用.where必將常見於單條記錄讀取查詢.
而且on一般跟join連用的,where是條件語句,聽說在有索引的情況下,join的效率會更快點,但具體沒親自測試過.
where是SQL-89語法,用on是SQL-92語法,都還沒過時,具體看實際用途進行選擇.
H. sql server中的關鍵字in和on有什麼區別
IN是在什麼什麼范圍中。
如:Select * from Appuser where UserID In (101,102,103,104)
ON主要是用來做兩個表的連接的。
如:
select distinct customers.customerid,customers.companyname
from customers join orders on
(customers.customerid=orders.customerid
)
where orders.shippeddate>2002-05-09
I. sql on 後面的條件寫多了沒效果,求解釋
在使用LEFT JION時,ON和where的區別
ON是在生成臨時表時使用的條件,不管ON中的條件是真假,都會返回左表的記錄
Where 是臨時表生成後,再對臨時表過濾,這時已經沒有LEFT JION的含義,條件不為真就全部過濾掉
J. SQL中ON和WHERE的區別
1、 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。
2、where條件是在臨時表生成好後,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。