Tìm kiếm tiền tố (prefix) với LIKE và UNION
Kết hợp UNION (loại trùng) với subquery và LIKE 'Joh%' để tìm tất cả giá trị bắt đầu bằng 'Joh' từ cột Name.
1. Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (Name VARCHAR(40));
mysql> INSERT INTO DemoTable VALUES
('John'), ('Sam'), ('Mike'), ('Ethan'), ('Johnson'), ('Bob');
2. Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+---------+ | Name | +---------+ | John | | Sam | | Mike | | Ethan | | Johnson | | Bob | +---------+
3. Truy vấn: Tìm giá trị bắt đầu bằng 'Joh' (dùng UNION)
mysql> SELECT * FROM (
SELECT Name AS myValue FROM DemoTable
UNION
SELECT Name FROM DemoTable
) tbl WHERE myValue LIKE 'Joh%';
4. Kết quả
+---------+ | myValue | +---------+ | John | | Johnson | +---------+
Phân tích truy vấn gốc (hơi dư thừa):
UNION2 lầnSELECT Name FROM DemoTable→ loại trùng lặp (giốngDISTINCT)- Sau đó lọc
LIKE 'Joh%' - Kết quả: John, Johnson
Cách đơn giản hơn (khuyến nghị):
SELECT Name FROM DemoTable WHERE Name LIKE 'Joh%';
Cho kết quả giống hệt nhưng gọn nhẹ, hiệu quả hơn.
Khi nào cần UNION: Khi tìm từ nhiều cột khác nhau hoặc nhiều bảng: