Từ khóa DISTINCT trong MySQL

Từ khóa DISTINCT trong MySQL
Từ khóa DISTINCT trong MySQL

Chức năng của Từ khóa DISTINCT trong MySQL

Từ khóa DISTINCT trong MySQL dùng để lọc những hàng có giá trị giống nhau, nếu có nhiều giá trị giống nhau trên nhiều hàng thì sẽ chỉ để lại 1 hàng, trường hợp DISTINCT nhiều cột thì chỉ lấy 1 hàng nếu các cột trên một hàng giống giá trị với các cột trên hàng khác.

Code Từ khóa DISTINCT trong MySQL

select DISTINCT ip,time from tb_online;
<?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"');
   
  // DISTINCT IP
   echo "<b>DISTINCT IP</b><br>";
   $sql ="select DISTINCT ip from tb_online";
   $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 "IP: {$row['ip']} <br> ".
         "--------------------------------<br>";
   } 
   // DISTINCT IP
   echo "<b>DISTINCT IP,TIME</b><br>";
   $sql ="select DISTINCT ip,time from tb_online";
   $ketquahai = mysql_query($sql,$conn);
   if(!$ketquahai){
	  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($ketquahai, MYSQL_ASSOC)){
		 echo "IP: {$row['ip']} <br> ".
		 "TIME: {$row['time']} <br> ".
         "--------------------------------<br>";
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

DISTINCT IP
IP: 1.52.219.1
--------------------------------
IP: 1.54.209.194
--------------------------------
IP: 1.54.214.140
--------------------------------
DISTINCT IP,TIME
IP: 1.52.219.1
TIME: 1754999345
--------------------------------
IP: 1.54.209.194
TIME: 1755041252
--------------------------------
IP: 1.54.214.140
TIME: 1754895577
--------------------------------
IP: 1.54.214.140
TIME: 1755041252
--------------------------------

Khi nào nên sử dụng DISTINCT trong MySQL?

DISTINCT phù hợp khi kết quả truy vấn có thể xuất hiện nhiều dòng chứa cùng một giá trị và bạn chỉ muốn giữ lại các giá trị khác nhau. Việc sử dụng đúng trường hợp giúp bảng kết quả gọn hơn, dễ đọc và phù hợp với nhu cầu thống kê hoặc hiển thị dữ liệu.

Loại bỏ dữ liệu trùng khi truy vấn

Khi một cột có nhiều bản ghi giống nhau, DISTINCT có thể được đặt ngay sau SELECT để chỉ trả về mỗi giá trị một lần. Cách này thường hữu ích khi cần lấy danh sách IP, mã sản phẩm, tỉnh thành hoặc các giá trị dùng để lọc dữ liệu.

SELECT DISTINCT ip
FROM tb_online;

Trong ví dụ trên, nếu một địa chỉ IP xuất hiện ở nhiều bản ghi thì kết quả chỉ giữ lại một lần xuất hiện của IP đó.

Sử dụng DISTINCT với nhiều cột

Khi DISTINCT áp dụng cho nhiều cột, MySQL xét sự kết hợp của toàn bộ các cột được chọn. Hai dòng chỉ được xem là trùng nếu tất cả giá trị trong nhóm cột đó giống nhau.

SELECT DISTINCT ip, time
FROM tb_online;

Vì vậy, hai bản ghi có cùng ip nhưng khác time vẫn được giữ lại. Đây là điểm cần chú ý nếu mục tiêu của bạn chỉ là lấy danh sách giá trị duy nhất của một cột.

Những lưu ý khi dùng DISTINCT

  • Chỉ sử dụng DISTINCT khi thực sự cần loại bỏ các dòng trùng trong kết quả.
  • Khi chọn nhiều cột, hãy xác định rõ tiêu chí nào được xem là một bản ghi trùng.
  • DISTINCT xử lý kết quả truy vấn, không xóa các bản ghi trùng đang tồn tại trong bảng.
  • Với truy vấn trên lượng dữ liệu lớn, việc loại bỏ trùng có thể làm tăng khối lượng xử lý, vì vậy nên sử dụng có chủ đích.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Từ khóa DISTINCT 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ề Từ khóa DISTINCT 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) !