Computer >> Máy Tính >  >> Lập trình >> MySQL

Chọn các giá trị đáp ứng các điều kiện khác nhau trên các hàng khác nhau trong MySQL?

Bạn có thể chọn các giá trị đáp ứng các điều kiện khác nhau trên các hàng khác nhau bằng IN () và GROUP BY. Cú pháp như sau -

SELECT yourColumnName1 from yourTableName
WHERE yourColumnName2 IN(value1,value2,.....N)
GROUP BY yourColumnName1
HAVING COUNT(DISTINCT yourColumnName2)=conditionValue;

Để hiểu cú pháp trên, trước tiên chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table DifferentRows
-> (
-> FirstRow int,
-> SecondRow int
-> );
Query OK, 0 rows affected (0.72 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -

mysql> insert into DifferentRows values(10,10);
Query OK, 1 row affected (0.15 sec)

mysql> insert into DifferentRows values(10,100);
Query OK, 1 row affected (0.17 sec)

mysql> insert into DifferentRows values(10,300);
Query OK, 1 row affected (0.16 sec)

mysql> insert into DifferentRows values(20,100);
Query OK, 1 row affected (0.18 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from DifferentRows;

Sau đây là kết quả.

+----------+-----------+
| FirstRow | SecondRow |
+----------+-----------+
| 10       | 10        |
| 10       | 100       |
| 10       | 300       |
| 20       | 100       |
+----------+-----------+
4 rows in set (0.00 sec)

Đây là truy vấn để chọn giá trị đáp ứng các điều kiện khác nhau trên các hàng khác nhau. Điều này cung cấp cho tất cả bản ghi FirstRow riêng biệt có SecondRow 10, 100, 300

mysql> select FirstRow from DifferentRows
-> where SecondRow IN(10,100,300)
-> group by FirstRow
-> having count(distinct SecondRow)=3;

Sau đây là kết quả.

+----------+
| FirstRow |
+----------+
| 10       |
+----------+
1 row in set (0.00 sec)