NẾU-THÌ MySQL

Câu lệnh IF được sử dụng trong các chương trình được lưu trữ triển khai cấu trúc điều kiện cơ bản trong MySQL. Dựa trên một điều kiện nào đó, nó cho phép chúng ta thực hiện một tập hợp các câu lệnh SQL. Nó trả về một trong ba giá trị Đúng, Sai hoặc NULL

Chúng ta có thể sử dụng câu lệnh này theo ba cách mệnh đề IF-THEN, IF-THEN-ELSE, IF-THEN-ELSEIF-ELSE và có thể kết thúc bằng END-IF. Chúng ta hãy xem chi tiết từng tuyên bố này

Câu lệnh IF-THEN

Câu lệnh này thực thi một tập hợp các truy vấn SQL dựa trên các điều kiện hoặc biểu thức nhất định. Cú pháp của câu lệnh IF-THEN như sau

Trong cú pháp trên, chúng ta phải chỉ định một điều kiện để thực thi mã. Nếu câu lệnh được đánh giá là đúng, nó sẽ thực thi câu lệnh giữa IF-THEN và END-IF. Nếu không, nó sẽ thực hiện câu lệnh sau END-IF

Ví dụ

NẾU. Khối ENDIF thực thi với các chương trình được lưu trữ và kết thúc bằng dấu chấm phẩy, như trong ví dụ bên dưới

Tiếp theo, lấy hai biến và đặt giá trị cho cả hai như bên dưới

Bây giờ, gọi hàm thủ tục lưu trữ để kiểm tra đầu ra

Chúng tôi sẽ nhận được đầu ra sau

NẾU-THÌ MySQL

Câu lệnh IF-THEN-ELSE

Nếu chúng ta muốn thực hiện các câu lệnh khác khi điều kiện chỉ định trong khối IF không được đánh giá là đúng, thì có thể sử dụng câu lệnh này. Cú pháp của câu lệnh IF-THEN-ELSE được đưa ra dưới đây

Trong cú pháp trên, chúng ta phải chỉ định một điều kiện để thực thi mã. Nếu câu lệnh được đánh giá là đúng, nó sẽ thực thi câu lệnh giữa IF-THEN và ELSE. Ngược lại, nó sẽ thực thi câu lệnh sau ELSE và END-IF

Hãy để chúng tôi sửa đổi thủ tục được lưu trữ myResult() ở trên. Vì vậy, trước tiên, hãy xóa thủ tục lưu trữ myResult() bằng cách sử dụng lệnh bên dưới

Hướng dẫn này giải thích cách sử dụng Câu lệnh IF và IF ELSE của MySQL trong Truy vấn chọn với cú pháp và các ví dụ lập trình thực tế

MySQL cung cấp hàm IF() là hàm điều khiển luồng và tùy thuộc vào điều kiện được chỉ định và đánh giá của nó là đúng hay sai, phần còn lại của câu lệnh sẽ thực thi

Chúng ta sẽ thảo luận về các ví dụ và ứng dụng khác nhau của hàm IF

Chúng ta cũng sẽ tìm hiểu về cách sử dụng cấu trúc điều kiện IF-ELSE thông qua CÁC THỦ TỤC VÀ CHỨC NĂNG ĐƯỢC LƯU TRỮ CỦA MySQL và cách các hàm đã tạo có thể được sử dụng với các truy vấn CHỌN

=> Nhấp vào đây để xem toàn bộ loạt bài hướng dẫn về MySQL

NẾU-THÌ MySQL

Bạn sẽ học được gì

  • Câu lệnh NẾU của MySQL
    • Các ví dụ NẾU của MySQL
      • Hàm IF() đơn giản
      • Hàm IF() với hàm tổng hợp
      • Sử dụng COUNT với IF để nhóm theo phạm vi
  • MySQL NẾU KHÁC
    • Các câu hỏi thường gặp
  • Phần kết luận
    • đề xuất đọc

Câu lệnh NẾU của MySQL

cú pháp

SELECT IF(condition, value_true, value_false) AS [column_name]

Hãy cố gắng hiểu chi tiết cú pháp (ở đây chúng tôi đang sử dụng truy vấn SELECT với hàm IF)

  • điều kiện, tình trạng, trạng thái. Đó là tuyên bố có điều kiện mà chúng tôi muốn đánh giá. Nó có thể liên quan đến một hoặc nhiều cột. Ví dụ. Kiểm tra xem giá trị đối với cột có > 100 không. Ở đây, chúng ta có thể viết một điều kiện nếu column_name > 100
  • value_true. Đây là giá trị Chuỗi mà chúng tôi muốn hiển thị theo điều kiện nếu nó được đánh giá là đúng
  • value_false. Đây là giá trị Chuỗi sẽ được hiển thị khi điều kiện đánh giá là sai

DỮ LIỆU MẪU

Chúng tôi sẽ sử dụng bảng Đơn hàng làm dữ liệu mẫu để viết các ví dụ liên quan đến hàm IF ELSE trong MySQL

Bảng ĐƠN HÀNG

  • order_id – INT
  • tên_khách_hàng – VARCHAR
  • thành phố – VARCHAR
  • order_total – DECIMAL
  • ngày – DATETIME
//Table creation script
CREATE TABLE `Orders` (
  `order_id` INT NOT NULL,
  `customer_name` VARCHAR(255),
  `city` VARCHAR(255),
  `order_total` DECIMAL(5,2),
  `order_date` VARCHAR(255),
  PRIMARY KEY (order_id)
) 

// Dummy data insertion script
INSERT INTO `Orders` 
(`order_id`,`customer_name`,`city`,`order_total`,`order_date`) VALUES
 (1080,"Nell L. Aguirre","Hanam","109.31","2020-04-11
 11:32:51"),(1081,"Dustin Love","Minucciano","29.57","2020-06-28
 06:39:49"),(1082,"Judah Frazier","Monte San Savino","28.57","2020-05-24
 18:44:27"),(1083,"Macey Ingram","Rouen","68.68","2020-07-24
 17:09:53"),(1084,"Jayme H. Blackburn","San Giorgio 
Albanese","45.98","2020-08-29 02:21:02"),(1085,"Xavier
 Gould","Eluru","92.44","2020-06-25 08:43:08"),(1086,"Desiree
 Buckley","Rotem","37.64","2020-11-11 21:28:12"),(1087,"Elvis
 Contreras","Montluçon","28.15","2020-04-10 05:56:04"),(1088,"Felix Q.
 Whitaker","Bristol","40.79","2020-03-21 03:13:03"),(1089,"Katell
 Willis","Quarona","101.34","2020-02-03 02:05:00");
INSERT INTO `orders`
 (`order_id`,`customer_name`,`city`,`order_total`,`order_date`) VALUES
 (1090,"Austin T. Casey","Cardiff","108.22","2020-05-06 
11:55:54"),(1091,"Dalton Q. Sims","Cefalà Diana","104.04","2020-06-08
 01:50:00"),(1092,"Althea C. Townsend","Ruda","44.65","2020-10-12
 07:46:17"),(1093,"Ruby Rivas","Colico","108.03","2020-07-09 
18:34:27"),(1094,"Fletcher H. Moses","Leugnies","69.27","2020-01-16
 22:59:23"),(1095,"Britanney D. Pitts","Minneapolis","86.91","2020-09-23
 01:17:49"),(1096,"Ginger A. Roth","Beho","106.51","2020-11-08
 16:54:30"),(1097,"Merritt A. Humphrey","Pomarolo","50.84","2020-07-25
 01:10:52"),(1098,"Ina Rush","Herne","84.31","2020-08-17
 23:27:09"),(1099,"Dana Rasmussen","Gary","57.83","2020-09-06 12:48:52");

Vui lòng tham khảo hình ảnh của các bảng với dữ liệu thử nghiệm như được tạo ở trên

Bảng ĐƠN HÀNG

NẾU-THÌ MySQL

Các ví dụ NẾU của MySQL

Hàm IF() đơn giản

Giả sử chúng ta muốn có một cột hiển thị bổ sung, chẳng hạn như – khách hàng_có_giá_trị cao, dựa trên giá_trị_đơn_hàng > 100

Vì vậy, tuyên bố vấn đề có thể là – hiển thị chi tiết khách hàng có_giá_trị cao cho tất cả các Đơn hàng sau ngày 1 tháng 9 năm 2020

Truy vấn CHỌN sử dụng hàm IF bên dưới

SELECT customer_name, IF(order_total>100,"yes","no") AS is_high_value
 FROM orders where order_date>'2020-09-01';

customer_nameis_high_valueDesiree BuckleynoAlthea C. TownsendnoBritanney D. PittsnoGừng A. RothyesDana Rasmussenno

Giả sử chúng ta chỉ muốn lọc ra những_khách_hàng_có_giá_trị_cao. Chúng ta có thể thêm câu lệnh IF vào mệnh đề WHERE trong truy vấn trên

SELECT customer_name FROM orders WHERE IF(order_total>100,"yes","no") = "yes"
AND order_date>'2020-09-01';

đầu ra

customer_nameGừng A. Roth

Hàm IF() với hàm tổng hợp

Hãy xem một ví dụ nơi chúng tôi sử dụng IF cùng với các hàm tổng hợp như SUM, COUNT, v.v. Giả sử chúng tôi muốn tìm tổng của tất cả các Đơn đặt hàng có tên thành phố bắt đầu bằng 'H'

SELECT SUM(IF(city LIKE 'H%', order_total, 0)) AS total FROM orders

đầu ra

tổng số193. 62

Sử dụng COUNT với IF để nhóm theo phạm vi

Giả sử chúng ta muốn nhóm các Đơn hàng theo order_range với một truy vấn duy nhất. Ví dụ: tổng số đơn đặt hàng từ 1-50 được tính là khách_hàng_có_giá_trị_thấp, từ 50-100 được tính là khách_hàng_có_giá_trị cao và lớn hơn 100 được tính là khách_hàng_cao cấp

Sử dụng hàm IF(), chúng ta có thể nhận được tất cả các chi tiết này bằng một truy vấn duy nhất

SELECT COUNT(IF(order_total<50,1,NULL)) as low_value_customer, 
COUNT(IF(order_total>50 and order_total < 100,1,NULL)) as high_value_customer,
COUNT(IF(order_total>100,1,NULL)) as premium_customer
FROM orders

Trong truy vấn trên, bạn có thể thấy rằng chúng tôi đã kết hợp hàm IF() với COUNT, hàm này sẽ thêm người dùng vào COUNT tùy thuộc vào phân khúc mà họ thuộc về

đầu ra

low_value_customerhigh_value_customerpremium_customer776

MySQL NẾU KHÁC

Hàm IF() có thể được sử dụng độc lập trực tiếp với các truy vấn MySQL, tuy nhiên, MySQL IF ELSE được sử dụng như một câu lệnh như một phần của các thủ tục hoặc hàm được lưu trữ

Hãy xem việc sử dụng IF-ELSE với chức năng MySQL

Chúng ta sẽ tạo một hàm để tính cấp khách hàng dựa trên order_total

  • Nếu order_total < 50 -> customer_tier => thấp
  • Nếu order_total > 50 và customer_tier < 100 -> customer_tier => cao
  • Nếu order_total > 150 -> customer_tier => cao cấp

Một chức năng như vậy được tạo ra như sau

USE mysql_ifelse;
DELIMITER //
CREATE FUNCTION CalculateCustomerTier(order_total FLOAT)
  RETURNS VARCHAR(20)
  BEGIN
    DECLARE customer_type VARCHAR(20);
    IF order_total < 50 THEN SET customer_type = 'low';
    ELSEIF order_total > 50 AND order_total<100 THEN SET customer_type = 'high';
    ELSEIF order_total > 100 THEN SET customer_type='premium';
    ELSE SET customer_type = 'unknown<';
    END IF;
    RETURN customer_type;
  END
  // 
  DELIMITER ;

Ở đây, mysql_ifelse là tên của cơ sở dữ liệu chúng tôi đang sử dụng để lưu trữ chức năng này

>> Bấm vào đây để biết thêm chi tiết về tạo hàm trên MySQL

Bây giờ hãy xem cách chúng ta có thể gọi hàm này bằng truy vấn CHỌN trên bảng Đơn hàng

SELECT customer_name, order_total, CalculateCustomerTier(order_total) AS
 tier FROM orders ORDER BY tier;

đầu ra

customer_nameorder_totaltierMacey Ingram68. 68caoXavier Gould92. 44caoFletcher H. Môsê69. 27caoBritanney D. Pitts86. 91caoMerritt A. Humphrey50. 84caoIna Rush84. 31caoDana Rasmussen57. 83caoDustin Love29. 57lowJudah Frazier28. 57lowJayme H. Blackburn45. 98lowDesiree Buckley37. 64lowElvis Contreras28. 15lowFelix Q. Whitaker40. 79lowAlthea C. Townsend44. 65thấpNell L. Aguirre109. 31 cao cấpKatell Willis101. 34cao cấpAustin T. Casey108. 22cao cấpDalton Q. sim104. 04 cao cấpRuby Rivas108. 03cao cấpGừng A. Roth106. 51 cao cấp

Như bạn có thể thấy ở trên, cột 'cấp' nhận giá trị được tính từ hàm 'CalculateCustomerTier`

Một điểm quan trọng cần lưu ý ở đây là do Hàm hoặc Thủ tục lưu trữ được lưu trữ tĩnh trong cơ sở dữ liệu – do đó, nếu hàm nằm trong một cơ sở dữ liệu khác, thì trong khi đề cập đến hàm trong truy vấn, bạn sẽ cần sử dụng tên đủ điều kiện của

Ghi chú. Giới thiệu về Câu lệnh IF và Hàm IF trong MySQL

Hàm IF() do MySQL cung cấp được sử dụng trong các truy vấn MySQL chung. Ví dụ. Chọn một giá trị dựa trên một số điều kiện, v.v. trong khi câu lệnh IF/câu lệnh IF ELSE được sử dụng cùng với THỦ TỤC ĐƯỢC LƯU TRỮ trong MySQL để lập trình các cấu trúc có điều kiện trong các hàm lớn hơn

Các câu hỏi thường gặp

Q #1) Bạn viết câu lệnh IF ELSE trong MySQL như thế nào?

Câu trả lời. Hàm IF() của MySQL có thể được sử dụng trong một truy vấn, trong khi cấu trúc câu lệnh điều kiện IF-ELSE được hỗ trợ để sử dụng thông qua FUNCTIONS hoặc STORED PROCEDURES

Tạo một CHỨC NĂNG để tính cấp thành phố từ một danh sách các thành phố nhất định

  • Nếu thành phố -> NEW YORK, CHICAGO -> tier1
  • Nếu thành phố -> BOSTON, SAN_FRANCISCO -> tier2
  • Nếu thành phố -> DETROIT, CLEVELAND -> tier3
  • Khác -> bậc 4
________số 8

Q #2) Làm cách nào để sử dụng điều kiện if trong truy vấn chèn trong MySQL?

Câu trả lời. Hàm IF không thể được sử dụng trực tiếp để thực hiện thao tác chèn có điều kiện, tuy nhiên, để đạt được hiệu quả tương tự, bạn có thể sử dụng mệnh đề WHERE trong khi sử dụng INSERT với MySQL để thực hiện thao tác INSERT có điều kiện

Q #3) Làm cách nào để sử dụng hàm IF với MySQL UPDATE?

Câu trả lời. Hãy xem cách chúng ta có thể sử dụng IF để cập nhật có điều kiện của một cột tùy thuộc vào giá trị của hàm IF

Ví dụ. Thêm một cột mới – customer_tier vào bảng Đơn hàng

ALTER TABLE orders ADD COLUMN customer_tier VARCHAR(20);

CẬP NHẬT giá trị của customer_tier thành 'cao' cho tất cả các hàng có order_total nằm trong khoảng từ 50 đến 100

Chúng tôi sẽ sử dụng điều kiện IF để thực hiện cập nhật có điều kiện như bên dưới

//Table creation script
CREATE TABLE `Orders` (
  `order_id` INT NOT NULL,
  `customer_name` VARCHAR(255),
  `city` VARCHAR(255),
  `order_total` DECIMAL(5,2),
  `order_date` VARCHAR(255),
  PRIMARY KEY (order_id)
) 

// Dummy data insertion script
INSERT INTO `Orders` 
(`order_id`,`customer_name`,`city`,`order_total`,`order_date`) VALUES
 (1080,"Nell L. Aguirre","Hanam","109.31","2020-04-11
 11:32:51"),(1081,"Dustin Love","Minucciano","29.57","2020-06-28
 06:39:49"),(1082,"Judah Frazier","Monte San Savino","28.57","2020-05-24
 18:44:27"),(1083,"Macey Ingram","Rouen","68.68","2020-07-24
 17:09:53"),(1084,"Jayme H. Blackburn","San Giorgio 
Albanese","45.98","2020-08-29 02:21:02"),(1085,"Xavier
 Gould","Eluru","92.44","2020-06-25 08:43:08"),(1086,"Desiree
 Buckley","Rotem","37.64","2020-11-11 21:28:12"),(1087,"Elvis
 Contreras","Montluçon","28.15","2020-04-10 05:56:04"),(1088,"Felix Q.
 Whitaker","Bristol","40.79","2020-03-21 03:13:03"),(1089,"Katell
 Willis","Quarona","101.34","2020-02-03 02:05:00");
INSERT INTO `orders`
 (`order_id`,`customer_name`,`city`,`order_total`,`order_date`) VALUES
 (1090,"Austin T. Casey","Cardiff","108.22","2020-05-06 
11:55:54"),(1091,"Dalton Q. Sims","Cefalà Diana","104.04","2020-06-08
 01:50:00"),(1092,"Althea C. Townsend","Ruda","44.65","2020-10-12
 07:46:17"),(1093,"Ruby Rivas","Colico","108.03","2020-07-09 
18:34:27"),(1094,"Fletcher H. Moses","Leugnies","69.27","2020-01-16
 22:59:23"),(1095,"Britanney D. Pitts","Minneapolis","86.91","2020-09-23
 01:17:49"),(1096,"Ginger A. Roth","Beho","106.51","2020-11-08
 16:54:30"),(1097,"Merritt A. Humphrey","Pomarolo","50.84","2020-07-25
 01:10:52"),(1098,"Ina Rush","Herne","84.31","2020-08-17
 23:27:09"),(1099,"Dana Rasmussen","Gary","57.83","2020-09-06 12:48:52");
0

Trong truy vấn trên, chúng ta có thể thấy rằng customer_tier được đặt thành giá trị được đánh giá bởi hàm IF và được đặt thành 'cao' khi order_total >50 và order_total<100

Phần kết luận

Trong hướng dẫn này, chúng ta đã xem xét các cách khác nhau để sử dụng hàm IF như một phần của truy vấn MySQL. Chúng tôi cũng đã học cách sử dụng nhiều hàm IF trong một truy vấn kết hợp với các hàm tổng hợp như COUNT, có thể trả về kết quả tùy thuộc vào điều kiện được chỉ định trong hàm IF

Trong phần sau của hướng dẫn, chúng ta đã thảo luận về việc tạo Hàm MySQL bằng cách sử dụng cấu trúc có điều kiện IF-ELSE, cấu trúc này sau đó có thể được sử dụng như một phần của truy vấn MySQL và có thể tác động lên giá trị đầu vào được cung cấp

Hàm IF() và IF-ELSE là một cấu trúc mạnh mẽ và cực kỳ hữu ích để truy vấn và nhóm dữ liệu, đây là bước đầu tiên để phân tích các tập dữ liệu lớn trên các cơ sở dữ liệu và bảng

Làm thế nào để sử dụng if then trong SQL?

Cú pháp. NẾU (a If the Boolean expression condition evaluates to true, then the block of code inside the if statement will be executed. If the Boolean expression evaluates to false, then the first set of code after the end of the if statement (after the closing end if) will be executed.

Chúng ta có thể sử dụng == trong MySQL không?

Toán tử bằng nhau trong MySQL thực hiện phép so sánh bằng . Câu lệnh MySQL sau đây kiểm tra xem 1 có bằng 1 không, nếu 1 bằng 2, nếu NULL bằng NULL, nếu NULL bằng 3 và nếu 3 bằng NULL.

Có if và chức năng trong MySQL không?

Hàm IF() của MySQL . The IF() function returns a value if a condition is TRUE, or another value if a condition is FALSE.

MySQL có câu lệnh if không?

Hàm IF() của MySQL được sử dụng để xác thực một điều kiện . Hàm IF() trả về một giá trị nếu điều kiện là TRUE và một giá trị khác nếu điều kiện là FALSE.