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

MySQL Merge chọn cùng nhau?

Để hợp nhất các lựa chọn với nhau, bạn cần sử dụng mệnh đề GROUP BY. Để hiểu khái niệm này, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table MergingSelectDemo
   -> (
   -> RoomServicesId int,
   -> RoomId int,
   -> ServiceId int
   -> );
Query OK, 0 rows affected (1.98 sec)

Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert. Truy vấn như sau -

mysql> insert into MergingSelectDemo values(10,10,10);
Query OK, 1 row affected (0.29 sec)
mysql> insert into MergingSelectDemo values(20,10,20);
Query OK, 1 row affected (0.22 sec)
mysql> insert into MergingSelectDemo values(30,10,30);
Query OK, 1 row affected (0.14 sec)
mysql> insert into MergingSelectDemo values(50,10,50);
Query OK, 1 row affected (0.19 sec)
mysql> insert into MergingSelectDemo values(110,20,20);
Query OK, 1 row affected (0.14 sec)
mysql> insert into MergingSelectDemo values(120,20,30);
Query OK, 1 row affected (0.37 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 MergingSelectDemo;

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

+----------------+--------+-----------+
| RoomServicesId | RoomId | ServiceId |
+----------------+--------+-----------+
|             10 |     10 |        10 |
|             20 |     10 |        20 |
|             30 |     10 |        30 |
|             50 |     10 |        50 |
|            110 |     20 |        20 |
|            120 |     20 |        30 |
+----------------+--------+-----------+
6 rows in set (0.00 sec)

Đây là truy vấn để hợp nhất lựa chọn với nhau -

mysql> select RoomId from MergingSelectDemo
   -> where ServiceId IN(10,20,30)
   -> group by RoomId
   -> HAVING COUNT(*)=3;

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

+--------+
| RoomId |
+--------+
|     10 |
+--------+
1 row in set (0.15 sec)