1027 查詢 where子句

2022-07-10 11:15:10 字數 1390 閱讀 8812

where 子句的語法是

where search_condition

這裡的search_condition是任意返回乙個boolean型別值的值表示式。

在完成對from子句的處理之後,生成的虛擬表的每一行都會對根據搜尋條件進行檢查。

如果該條件的結果是真,那麼該行被保留在輸出表中;否則(也就是說,如果結果是假或空)就把它拋棄。

搜尋條件通常至少要引用一些在from子句裡生成的列;雖然這不是必須的,但如果不引用這些列,那麼where子句就沒什麼用了。

注意:內連線的連線條件既可以寫在where子句也可以寫在join子句裡。例如,這些表表示式是等效的:

from a, b where a.id = b.id and b.val > 5

和:from a inner join b on (a.id = b.id) where b.val > 5

或者可能還有:

from a natural join b where b.val > 5

你想用哪個只是乙個風格問題。from子句裡的join語法可能不那麼容易移植到其它sql資料庫管理系統中。

對於外部連線而言沒有選擇:它們必須在from子句中完成。

外部連線的on或using子句不等於where條件,因為它導致最終結果中行的增加(對那些不匹配的輸入行)和減少。

這裡是一些where子句的例子:

select ... from fdt where c1 > 5

select ... from fdt where c1 in (1, 2, 3)

select ... from fdt where c1 in (select c1 from t2)

select ... from fdt where c1 in (select c3 from t2 where c2 = fdt.c1 + 10)

select ... from fdt where c1 between (select c3 from t2 where c2 = fdt.c1 + 10) and 100

select ... from fdt where exists (select c1 from t2 where c2 > fdt.c1)

在上面的例子裡,fdt是從from子句中派生的表。 那些不符合where子句的搜尋條件的行會被從fdt中刪除。

請注意我們把標量子查詢當做乙個值表示式來用。 和任何其它查詢一樣,子查詢裡可以使用複雜的表表示式。

同時還請注意fdt在子查詢中也被引用。只有在c1也是作為子查詢輸入表的生成表的列時,才必須把c1限定成fdt.c1。

但限定列名字可以增加語句的清晰度,即使有時候不是必須的。這個例子展示了乙個外層查詢的列名範圍如何擴充套件到它的內層查詢。

where子句查詢

使用where關鍵進行查詢結果篩選 select 欄位名,欄位名,from表名 where 篩選條件 單條件篩選 單篩選條件 使用運算子進行篩選 單個條件中 注意 如果條件中的值為字元,必須使用單引號括起來 查詢所有的員工的工資資訊 select empno,ename,sal comm as 薪資...

連線查詢中的ON 子句和 WHERE 子句

先看兩張表結構 produc表 問題是下面兩個查詢結果有什麼不同 1.select from product left join product details on product.id product details.id and product details.id 2 2.select fr...

SQLite中的WHERE子句

where子句用於從from子句生成的工作表中過濾行。它提供了對每一行進行判斷的表示式。當表示式返回的值為false或null時,此行就會被丟棄。這種丟棄只是刪除記錄,並不會被當作錯誤處理。所以,在經過where子句過濾生成的表將具有與原始表相同數量的列,但可能具有較少的行。圖3.10顯示了wher...