翻譯|使用教程|編輯:吳園園|2020-06-24 10:59:26.153|閱讀 752 次
概述:在今天的文章中,我們將在Navicat Premium中創(chuàng)建一個SELECT查詢,該查詢將根據(jù)另一個字段的值返回行。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Navicat Premium是一個可連接多種數(shù)據(jù)庫的管理工具,它可以讓你以單一程序同時連接到MySQL、Oracle及PostgreSQL數(shù)據(jù)庫,讓管理不同類型的數(shù)據(jù)庫更加的方便。
不久之前,我們介紹了非常有用且用途廣泛的Case Statement。在該文章中,我們像大多數(shù)DBA和開發(fā)人員一樣在SELECT子句中使用了Case Statement。使用Case語句的另一種方法是在WHERE子句中。在那里,可以基于條件來改變查詢所獲取的數(shù)據(jù)。在這種情況下,Case語句非常適合靜態(tài)查詢和動態(tài)查詢,例如在存儲過程中可以找到的那些查詢。在今天的文章中,我們將在Navicat Premium中創(chuàng)建一個SELECT查詢,該查詢將根據(jù)另一個字段的值返回行。
按租賃時間列出電影
在進入CASE語句之前,讓我們從一個查詢開始,該查詢從Sakila Sample Database返回一個電影列表。這是一個MySQL數(shù)據(jù)庫,其中包含許多與虛構(gòu)的視頻租賃商店有關(guān)的表,視圖和查詢。表格包括演員,電影,客戶,租金等,按電影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中執(zhí)行查詢將顯示以下結(jié)果:
根據(jù)租金率設(shè)置租期
案例陳述可用于根據(jù)其他幾個可能的值選擇一個值。例如,假設(shè)我們要基于rental_rate設(shè)置rental_duration。我們可以這樣使用Case語句來做到這一點:
這具有將rental_rates與rental_durations相關(guān)聯(lián)的效果。因此:
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;
我們可以在下面的屏幕截圖中看到結(jié)果:
請注意,每部電影的租借價格為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;
這是結(jié)果。將它們與CASE查詢的內(nèi)容進行比較:
結(jié)論
在今天的文章中,我們在Navicat Premium中創(chuàng)建了SELECT查詢,該查詢使用WHERE子句中的CASE語句返回電影列表。對Navicat Premium感興趣?您可以免費試用 14天,以進行評估!
有想要購買正版授權(quán)的朋友,歡迎
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: