MYSQL CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Gộp kết quả với toán tử UNION trong MySQL

Nếu bạn cần viết hai câu truy vấn SELECT khác nhau nhưng bạn muốn nó trả về một danh sách kết quả duy nhất thì bạn phải sử dụng toán tử UNION. Toán tử này cũng ít khi sử dụng khi bạn viết ứng dụng Web nhưng cũng nên tìm hiểu vì biết đâu sau này cần.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Toán tử UNION trong MySQL

Toán tử UNION cho phép bạn nối kết quả của hai hoặc nhiều câu truy vấn lại với nhau để trở thành một danh sách kết quả duy nhất. Cú pháp của MySQL UNION như sau:

SELECT column1, column2
UNION [DISTINCT | ALL]
SELECT column1, column2
UNION [DISTINCT | ALL]
…

Bài viết này được đăng tại [free tuts .net]

Tuy nhiên khi sử dụng UNION trong MySQL chúng ta cần phải tuân thủ những nguyên tắc sau đây:

  • Số lượng colums trong tất cả các lệnh SELECT phải bằng nhau
  • Mỗi column tương ứng vị trí phải có cùng kiểu dữ liệu và độ dài

Theo mặc định thì UNION sẽ loại bỏ các kết quả trùng lặp của các câu SELECT nên nó tạo cho chúng ta hai lựa chọn sau:

  • Nếu chọn UNION DISTINCT thì nó sẽ loại bỏ kết quả trùng.
  • Nếu chọn UNION ALL thì nó giữ lại kết quả trùng.
  • Nếu bạn không chọn gì thì mặc định nó sẽ lấy UNION DISTINCT

2. Một số ví dụ UNION trong MySQL

Trước tiên bạn tạo database, hai tables và thêm một số dữ liệu bằng cách chạy lệnh SQL sau:

CREATE DATABASE uni_db;

USE uni_db;

CREATE TABLE news_1 (
	id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
	title VARCHAR(255)
) ENGINE = INNODB;

CREATE TABLE news_2 (
	id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
	title VARCHAR(255)
) ENGINE = INNODB;


INSERT INTO news_1(title) VALUES('Tin Thoi Su');
INSERT INTO news_1(title) VALUES('Tin The Thao');
INSERT INTO news_1(title) VALUES('Tin Quoc Te');
INSERT INTO news_1(title) VALUES('Tin Do day');
INSERT INTO news_1(title) VALUES('Tin Khung Bo');

INSERT INTO news_2(title) VALUES('Ngay Quoc Te');
INSERT INTO news_2(title) VALUES('Ngay Phu Nu');
INSERT INTO news_2(title) VALUES('The Gioi Do Day');
INSERT INTO news_2(title) VALUES('Chien Tranh The Gioi II');
INSERT INTO news_2(title) VALUES('Du Hoc Vien');

Dữ liệu Table news_1:

du-lieu-trang-news-1.pn

Dữ liệu trang news_2:

du-lieu-trang-news-2.png

Ok, bây giờ ta làm một số ví dụ để các bạn hiểu rõ hợn lệnh UNION trong MySQL này.

Ví dụ 1: Lấy dữ liệu của hai bảng news_1 và news_2 và sau đó gom lại thành một kết quả

SELECT id, title FROM news_1
UNION 
SELECT id, title FROM news_2

Kết quả:

ket-qua-lenh-union-trong-mysql.png

Ví dụ 2: Lấy ID của bảng news_1, news_2 và sau đó gom lại thành một kết quả

SELECT id FROM news_1
UNION
SELECT id FROM news_2

Kết quả:

union-trong-mysql.png

Rõ ràng UNION đã bị xóa đi kết quả trùng vì đáng lẽ ra nó phải hiển thị 10 kết quả nhưng ở đây nó hiển thị có 5 kết quả.

Bây giờ ta sử dụng lệnh ALL để xem thế nào.

SELECT id FROM news_1
UNION ALL
SELECT id FROM news_2

Kết quả:

/339/union-trong-mysql-1.png

Với lệnh ALL thì dù bị trùng lặp nhưng nó vẫn trả về kết quả.

3. Lời kết

Toán tử UNION trong MySQL rất ít sử dụng khi xây dựng ứng dụng website mà thay vào đó sử dụng các lệnh UPDATE, ADDSELECT nhiều hơn. Bài này cũng tương đối ngắn vì kiến thức đơn giản và dễ hiểu, kể từ bài sau chúng ta tìm hiểu về lệnh JOIN, đây là một lệnh khá khó đối với những bạn mới học MySQL.

Cùng chuyên mục:

Hàm ENCRYPT trong MySQL

Hàm ENCRYPT trong MySQL

Cách sử dụng ENCRYPT trong MySQL

Hàm MD5 trong MySQL

Hàm MD5 trong MySQL

Cách sử dụng MD5 trong MySQL

Hàm OLD_PASSWORD trong MySQL

Hàm OLD_PASSWORD trong MySQL

Cách sử dụng OLD_PASSWORD trong MySQL

Hàm PASSWORD trong MySQL

Hàm PASSWORD trong MySQL

Cách sử dụng PASSWORD trong MySQL

Hàm ASCII trong MySQL

Hàm ASCII trong MySQL

Cách sử dụng ASCII trong MySQL

Hàm CHAR_LENGTH trong MySQL

Hàm CHAR_LENGTH trong MySQL

Cách sử dụng CHAR_LENGTH trong MySQL

Hàm CHARACTER_LENGTH trong MySQL

Hàm CHARACTER_LENGTH trong MySQL

Cách sử dụng CHARACTER_LENGTH trong MySQL

Hàm CONCAT trong MySQL

Hàm CONCAT trong MySQL

Cách sử dụng CONCAT trong MySQL

Hàm CONCAT_WS trong MySQL

Hàm CONCAT_WS trong MySQL

Cách sử dụng CONCAT_WS trong MySQL

Hàm FIELD trong MySQL

Hàm FIELD trong MySQL

Cách sử dụng FIELD trong MySQL

Hàm FIND_IN_SET trong MySQL

Hàm FIND_IN_SET trong MySQL

Cách sử dụng FIND_IN_SET trong MySQL

Hàm FORMAT trong MySQL

Hàm FORMAT trong MySQL

Cách sử dụng FORMAT trong MySQL

Hàm INSERT trong MySQL

Hàm INSERT trong MySQL

Cách sử dụng INSERT trong MySQL

Hàm INSTR trong MySQL

Hàm INSTR trong MySQL

Cách sử dụng INSTR trong MySQL

Hàm LCASE trong MySQL

Hàm LCASE trong MySQL

Cách sử dụng LCASE trong MySQL

Hàm LEFT trong MySQL

Hàm LEFT trong MySQL

Cách sử dụng LEFT trong MySQL

Hàm LENGTH trong MySQL

Hàm LENGTH trong MySQL

Cách sử dụng LENGTH trong MySQL

Hàm LOCATE trong MySQL

Hàm LOCATE trong MySQL

Cách sử dụng LOCATE trong MySQL

Hàm LOWER trong MySQL

Hàm LOWER trong MySQL

Cách sử dụng LOWER trong MySQL

Hàm LPAD trong MySQL

Hàm LPAD trong MySQL

Cách sử dụng LPAD trong MySQL

Top