用於過濾數據的 SQL WHERE 子句

用於過濾數據的 SQL WHERE 子句

在本教程中,我們將討論什麼是 SQL WHERE子句以及如何使用它。我們還將通過使用ANDOR運算符討論多個條件。 

SQL WHERE子句用於過濾數據或記錄。它用於創建條件以僅提取所需的必要記錄。 

除了在SELECT語句中使用WHERE子句外,我們還可以將它與UPDATEDELETE和其他SQL語句一起使用。但是,對於本教程,我們只會在SELECT語句中使用它。

目錄

使用 SQL WHERE 子句的簡單選擇

如果不在SELECT語句中使用WHERE子句,它將返回特定表中的所有行。

用於過濾數據的 SQL WHERE 子句

對於此示例,我們只想獲取具有Gadgets類別的數據。

用於過濾數據的 SQL WHERE 子句


所以,我們需要使用WHERE子句來限制結果。在此示例中,我們創建了一個條件,它應該檢查類別列,並且僅在類別Gadgets時才返回記錄。

用於過濾數據的 SQL WHERE 子句

請注意,在使用字符串時,我們需要用單引號 ( ' ' ) 將其括起來。 

當使用數字或整數時,我們不需要使用單引號。例如,我們要獲取價格小於或等於 30 的記錄。

所以,我們只需要創建一個查詢,它應該檢查Price列並返回值為 30 或小於 30 的那些行。如您所見,我們也沒有將數字括在單引號中,因為它是一個整數。

用於過濾數據的 SQL WHERE 子句

帶 AND 運算符的 SQL WHERE 子句

我們還可以將包含多列的WHERE子句與ANDOR運算符一起使用。

如果兩個條件都為TRUE ,則AND運算符將起作用。所以它用於獲取多個條件為TRUE 的記錄。

例如,在這個場景中,我們想要製造商是 GizmoWorks 並且價格小於 20 的記錄。  

用於過濾數據的 SQL WHERE 子句

如圖所示,我們使用WHERE子句和AND運算符創建了多個條件。

用於過濾數據的 SQL WHERE 子句

在我們的桌子上,有 2 行是 GizmoWorks 製造商。但是,第 2 行的價格超過 20。因此,結果只會返回對我們設置的 2 個條件返回 true 的行。 

用於過濾數據的 SQL WHERE 子句

OR 運算符的SQL WHERE 子句

OR運算符意味著如果其中一個條件為真,它應該返回記錄。因此,如果AND只返回一條記錄,其中兩個或所有條件都為真,則使用OR運算符將返回一條記錄,即使只有一個條件返回真。 

例如,我們要獲取產品名稱為SingleTouchMultiTouch的記錄。

用於過濾數據的 SQL WHERE 子句

我們只需要創建一個查詢來檢查Product表的PName列。在此查詢中,我們使用WHERE子句和OR運算符返回符合所設置條件之一的行。

用於過濾數據的 SQL WHERE 子句

在 SSMS 中使用 WHERE 子句

現在讓我們在SSMS中使用WHERE 子句。在這裡,我們使用 Microsoft 的一個名為 AdventureWorks2012 的示例數據庫。您可以按照本教程了解如何進行設置。 

對於此示例,我們將獲取SalesOrderHeader表下的記錄。

用於過濾數據的 SQL WHERE 子句

要在SSMS中執行此查詢,只需突出顯示它並單擊執行按鈕。

用於過濾數據的 SQL WHERE 子句

如果不使用WHERE子句,它將返回該表下的所有記錄。如我們所見,它返回了 31,465 行。

用於過濾數據的 SQL WHERE 子句

假設我們要篩選這些記錄並僅返回TerritoryID為 5 的行。因此,讓我們在此處使用WHERE子句來創建該條件。

用於過濾數據的 SQL WHERE 子句

執行該查詢後,它現在將返回 486 行而不是 31,465 行。這是因為它將記錄過濾為TerritoryID僅為5的記錄。

用於過濾數據的 SQL WHERE 子句

現在,我們仍在從該表中提取所有列。我們還可以通過指定要查看的列來限制列。

只需將*更改為特定的列名並執行查詢。 

用於過濾數據的 SQL WHERE 子句

現在它將為我們提供我們設置的具有相同行數的特定列。 

用於過濾數據的 SQL WHERE 子句

現在讓我們使用帶有String值的WHERE子句。例如,我們要限制基於PurchaseOrderNumber列值P014123169936的記錄。因為這個值有一個字母,所以它被認為是一個字符串,即使它有很多數字。

用於過濾數據的 SQL WHERE 子句

請記住,在使用String值時,我們需要用單引號將其括起來。如果沒有單引號,則會出現一條紅線,表示​​有錯誤。

用於過濾數據的 SQL WHERE 子句

結果將只給我們一行,這意味著只有一個數據包含我們設置的採購訂單號。

用於過濾數據的 SQL WHERE 子句

WHERE 子句與 AND 運算符並按關鍵字排序

讓我們有另一個過濾器,我們要在其中選擇具有特定訂單日期的記錄。對於此示例,我們只想選擇訂單日期大於或等於“ 2014-01-01 ”且小於或等於“ 2014-03-31 ”的記錄。

用於過濾數據的 SQL WHERE 子句

我們也可以在這裡使用Order By關鍵字。對於此示例,我們希望它按OrderDate降序排序。

用於過濾數據的 SQL WHERE 子句

結果應該只顯示滿足我們設置的兩個條件的記錄。

用於過濾數據的 SQL WHERE 子句

我們還可以使用BETWEEN運算符重新創建該查詢。BETWEEN運算符選擇給定範圍內的值。所以,如果我們這樣做,它會給我們相同的結果。 

用於過濾數據的 SQL WHERE 子句

帶有 OR 運算符的 WHERE 子句用於多個條件

在此示例中,我們有多個條件使用OR運算符。我們要選擇具有 5、6 或 7 作為其區域 ID 的行。

用於過濾數據的 SQL WHERE 子句

結果應顯示滿足我們設置的任一條件的所有記錄。對於此示例,它返回了 7,225 行。

用於過濾數據的 SQL WHERE 子句

將函數與 WHERE 子句一起使用

我們還可以使用帶有WHERE子句的函數。例如,我們可以使用YEAR函數自動獲取訂單日期為 2014 年的所有記錄,而不是手動輸入 OrderDate 列的日期值。 

用於過濾數據的 SQL WHERE 子句

結果給了我們 11,761 行,這是 2014 年的記錄。

用於過濾數據的 SQL WHERE 子句

LuckyTemplates 用戶的 SQL – 新的 LuckyTemplates 課程
查詢折疊和連接到 SQL Server

結論

總而言之,我們已經學習瞭如何在SELECT語句中使用WHERE子句。同樣,我們也可以在UPDATEDELETE和其他SQL語句中使用它。我們還學習瞭如何使用它通過使用ANDOR運算符來創建多個條件。

此外,我們學習了BETWEEN運算符在一系列值之間進行選擇的用法。我們還可以將WHERE子句與類似YEAR函數的函數一起使用。使用WHERE子句非常重要,可以過濾一些我們想要的記錄。有必要減少查詢返回的記錄,以過濾掉我們不需要的不必要數據。 

一切順利,

哈菲茲


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的