Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Lấy nhiều hàng MySQL dựa trên giá trị cụ thể trong một cột

Để lọc các hàng có giá trị cột khớp với một giá trị đầu vào cụ thể, dùng mệnh đề WHERE với toán tử so sánh = (hoặc IN cho nhiều giá trị).

Cú pháp

SELECT cot_1, cot_2, ...
FROM ten_bang
WHERE ten_cot = 'gia_tri_can_tim';

Ví dụ minh họa

Tạo bảng sinh viên - môn học:

mysql> CREATE TABLE DemoTable1528 (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName VARCHAR(20), StudentSubject VARCHAR(20)
    -> );
mysql> INSERT INTO DemoTable1528(StudentName,StudentSubject) VALUES
    -> ('Chris','MongoDB'), ('Bob','MySQL'), ('David','Java'),
    -> ('Carol','C'), ('Sam','Java'), ('Mike','Java'), ('Adam','MySQL');

Truy vấn: Lấy sinh viên học môn 'Java':

mysql> SELECT StudentId, StudentName, StudentSubject
    -> FROM DemoTable1528
    -> WHERE StudentSubject = 'Java';

Kết quả (3 hàng):

+-----------+-------------+----------------+
| StudentId | StudentName | StudentSubject |
+-----------+-------------+----------------+
|         3 | David       | Java           |
|         5 | Sam         | Java           |
|         6 | Mike        | Java           |
+-----------+-------------+----------------+

Mở rộng

  • Nhiều giá trị: WHERE StudentSubject IN ('Java','MySQL').
  • Khớp một phần: WHERE StudentSubject LIKE '%Java%'.
  • Phân biệt chữ hoa/thường: Mặc định không phân biệt (collation _ci). Muốn phân biệt: WHERE StudentSubject = 'Java' COLLATE utf8mb4_bin.
  • Hiệu năng: Tạo index trên StudentSubject để tra cứu nhanh.

Ứng dụng thực tế

  • Lọc sản phẩm theo danh mục.
  • Tìm đơn hàng theo trạng thái.
  • Phân quyền: lấy dữ liệu theo user_id = ?.