翻譯|使用教程|編輯:吳園園|2020-06-24 10:59:26.153|閱讀 752 次
概述:在今天的文章中,我們將在Navicat Premium中創建一個SELECT查詢,該查詢將根據另一個字段的值返回行。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Navicat Premium是一個可連接多種數據庫的管理工具,它可以讓你以單一程序同時連接到MySQL、Oracle及PostgreSQL數據庫,讓管理不同類型的數據庫更加的方便。
不久之前,我們介紹了非常有用且用途廣泛的Case Statement。在該文章中,我們像大多數DBA和開發人員一樣在SELECT子句中使用了Case Statement。使用Case語句的另一種方法是在WHERE子句中。在那里,可以基于條件來改變查詢所獲取的數據。在這種情況下,Case語句非常適合靜態查詢和動態查詢,例如在存儲過程中可以找到的那些查詢。在今天的文章中,我們將在Navicat Premium中創建一個SELECT查詢,該查詢將根據另一個字段的值返回行。
按租賃時間列出電影
在進入CASE語句之前,讓我們從一個查詢開始,該查詢從Sakila Sample Database返回一個電影列表。這是一個MySQL數據庫,其中包含許多與虛構的視頻租賃商店有關的表,視圖和查詢。表格包括演員,電影,客戶,租金等,按電影ID,標題,租金率和5天的租期。
我們的查詢顯示電影ID,標題,租賃費率和租賃期限列,并將字段縮小到其Rental_duration恰好為5天的電影。這是聲明:
SELECT film_id, title, rental_rate, rental_duration FROM film WHERE rental_duration = 5 ORDER BY rental_rate DESC;
在Navicat Premium中執行查詢將顯示以下結果:
根據租金率設置租期
案例陳述可用于根據其他幾個可能的值選擇一個值。例如,假設我們要基于rental_rate設置rental_duration。我們可以這樣使用Case語句來做到這一點:
這具有將rental_rates與rental_durations相關聯的效果。因此:
SELECT film_id, title, rental_rate, rental_duration FROM film WHERE rental_duration = CASE rental_rate WHEN 0.99 THEN 3 WHEN 2.99 THEN 4 WHEN 4.99 THEN 5 ELSE 6 END ORDER BY title DESC;
我們可以在下面的屏幕截圖中看到結果:
請注意,每部電影的租借價格為0.99時,rental_duration始終為3。同樣,租借價格為2.99的電影均具有4的Rental_duration,依此類推。
重寫CASE語句
請記住,Case Statement僅是組合兩個或多個OR條件的另一種方式。這樣,我們可以不使用Case語句來重寫查詢,但是,如您所見,它需要更多的SQL:
SELECT film_id, title, rental_rate, rental_duration FROM film WHERE rental_rate = 0.99 AND rental_duration = 3 OR rental_rate = 2.99 AND rental_duration = 4 OR rental_rate = 4.99 AND rental_duration = 5 OR rental_rate NOT IN (0.99, 2.99, 4.99) AND rental_duration = 6 ORDER BY title DESC;
這是結果。將它們與CASE查詢的內容進行比較:
結論
在今天的文章中,我們在Navicat Premium中創建了SELECT查詢,該查詢使用WHERE子句中的CASE語句返回電影列表。對Navicat Premium感興趣?您可以免費試用 14天,以進行評估!
有想要購買正版授權的朋友,歡迎
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: