Toán tử OR trong MySQL

Toán tử OR trong MySQL
Toán tử OR trong MySQL

Chức năng của Toán tử OR trong MySQL

Toán tử OR trong MySQL được sử dụng trong mệnh đề WHERE dùng để nhóm các điều kiện lại với nhau, mỗi hàng chỉ cần thỏa một trong những điều kiện đó.

Code Toán tử OR trong MySQL

select hienthi,ten,id,gia,id_cha1 from tb_sanpham where hienthi=1 and (id_cha1=1 or id_cha1=2);
<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // Mật khẩu
   // Kết nối đến tên username
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ){
     die('Không kết nối được: ' . mysql_error());
   }
   // Chọn tên database
   mysql_select_db('webmoi_tendata');
   // Xét kiểu tiếng việt 
   mysql_query('SET NAMES "utf8"');
   // id_cha1=1 or id_cha1=2
   echo "<b>id_cha1=1 or id_cha1=2</b><br>";
   $sql ="select hienthi,ten,id,gia,id_cha1 from tb_sanpham where hienthi=1 and (id_cha1=1 or id_cha1=2)";
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể lấy dữ liệu: ' . mysql_error());  
   }
   // Dùng vòng lặp để lấy ra từng hàng trong bảng	
	while($row = mysql_fetch_array($ketquamot, MYSQL_ASSOC)){
		 echo "ID: {$row['id']} <br> ".
		 "ID Cha cấp một: {$row['id_cha1']} <br> ".
		 "Hiển thị: {$row['hienthi']} <br> ".
         "Tên sản phẩm: {$row['ten']} <br> ".
         "Giá : {$row['gia']} <br> ".
         "--------------------------------<br>";
   }
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

id_cha1=1 or id_cha1=2
ID: 1
ID Cha cấp một: 1
Hiển thị: 1
Tên sản phẩm: Dàn karaoke gia đình KTreasure FE12 thương hiệu Đức
Giá : 55000000
--------------------------------
ID: 2
ID Cha cấp một: 1
Hiển thị: 1
Tên sản phẩm: Dàn karaoke gia đình KTreasure TD12 mới nhất
Giá : 44550000
--------------------------------
ID: 3
ID Cha cấp một: 1
Hiển thị: 1
Tên sản phẩm: Dàn âm thanh nghe nhạc AV01
Giá : 25000000
--------------------------------
ID: 4
ID Cha cấp một: 1
Hiển thị: 1
Tên sản phẩm: Dàn âm thanh nghe nhạc AV02
Giá : 30000000
--------------------------------
ID: 6
ID Cha cấp một: 2
Hiển thị: 1
Tên sản phẩm: Micro Shure SM58-LC
Giá : 2700000
--------------------------------
ID: 7
ID Cha cấp một: 2
Hiển thị: 1
Tên sản phẩm: Micro AKG D7 S
Giá : 3400000
--------------------------------

Cách kết hợp Toán tử OR với các điều kiện khác trong MySQL

Khi truy vấn cần kiểm tra nhiều điều kiện, OR thường được kết hợp với AND để tạo ra bộ lọc linh hoạt hơn. Điểm quan trọng là phải xác định rõ nhóm điều kiện nào cần được ưu tiên, tránh để MySQL hiểu biểu thức theo cách khác với mong muốn.

Kết hợp OR với AND trong MySQL

Toán tử AND yêu cầu các điều kiện liên quan cùng đúng, trong khi OR chỉ cần một trong các điều kiện được thỏa mãn. Khi sử dụng chung, MySQL xử lý AND trước OR. Vì vậy, một câu lệnh có thể cho kết quả khác dự đoán nếu không xác định rõ nhóm điều kiện.

SELECT *
FROM products
WHERE category = 'Laptop'
AND price < 20000000
OR category = 'Phone'
AND price < 15000000;

Trong ví dụ trên, truy vấn tìm sản phẩm thuộc nhóm Laptop có giá dưới 20 triệu hoặc thuộc nhóm Phone có giá dưới 15 triệu. Cách viết này phù hợp khi mỗi nhóm sản phẩm có một điều kiện riêng.

Sử dụng dấu ngoặc khi kết hợp OR và AND

Khi có nhiều điều kiện phức tạp, nên dùng dấu ngoặc để xác định rõ phạm vi của OR. Cách này giúp câu lệnh dễ đọc hơn và hạn chế nhầm lẫn khi bổ sung hoặc thay đổi điều kiện sau này.

SELECT *
FROM products
WHERE category = 'Laptop'
AND (price < 20000000 OR stock > 10);

Với câu lệnh trên, sản phẩm trước tiên phải thuộc nhóm Laptop, sau đó chỉ cần thỏa mãn một trong hai điều kiện về giá hoặc số lượng tồn kho. Dấu ngoặc giúp thể hiện chính xác ý định của truy vấn thay vì phụ thuộc vào thứ tự ưu tiên của các toán tử.

Những lỗi thường gặp khi dùng OR trong điều kiện MySQL

Một lỗi phổ biến là đặt OR ở vị trí khiến điều kiện phía trước bị mở rộng ngoài dự kiến. Chẳng hạn, nếu muốn lọc sản phẩm thuộc một nhóm nhất định nhưng lại viết điều kiện OR không có dấu ngoặc, các bản ghi ngoài nhóm đó vẫn có thể được trả về.

SELECT *
FROM products
WHERE category = 'Laptop'
AND (price < 20000000 OR stock > 10);

Thay vì chỉ tập trung vào việc câu lệnh có chạy được hay không, nên kiểm tra xem nhóm điều kiện đã đúng với mục đích lọc dữ liệu chưa. Với truy vấn có nhiều AND và OR, sử dụng dấu ngoặc và trình bày mỗi nhóm điều kiện rõ ràng sẽ giúp hạn chế sai kết quả và thuận tiện hơn khi bảo trì SQL.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Toán tử OR trong MySQL.

Tải file database .sql về nếu muốn kiểm tra hoặc thực hành Tải về.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Toán tử OR trong MySQL
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !