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

Lấy hàng có giá trị chung từ cùng bảng với ID khác nhau trong MySQL

Để làm điều này, dùng mệnh đề GROUP BY ... HAVING. Tạo bảng:

mysql> CREATE TABLE DemoTable1467 ( Id INT, Name VARCHAR(20) ); Query OK, 0 rows affected (0.64 sec)

Chèn bản ghi:

mysql> INSERT INTO DemoTable1467 VALUES(100,'Chris'); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO DemoTable1467 VALUES(110,'David'); Query OK, 1 row affected (0.10 sec) mysql> INSERT INTO DemoTable1467 VALUES(120,'Mike'); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO DemoTable1467 VALUES(100,'Chris'); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO DemoTable1467 VALUES(130,'Carol'); Query OK, 1 row affected (0.17 sec) mysql> INSERT INTO DemoTable1467 VALUES(100,'Chris'); Query OK, 1 row affected (0.20 sec)

Hiển thị:

mysql> SELECT * FROM DemoTable1467;

Kết quả:

+------+-------+ | Id   | Name  | +------+-------+ | 100  | Chris | | 110  | David | | 120  | Mike  | | 100  | Chris | | 130  | Carol | | 100  | Chris | +------+-------+ 6 rows in set (0.00 sec)

Truy vấn lấy hàng có giá trị chung (xuất hiện > 2 lần):

mysql> SELECT Id, Name, COUNT(*) AS IdCount FROM DemoTable1467 GROUP BY Id HAVING IdCount > 2;

Kết quả:

+------+-------+---------+ | Id   | Name  | IdCount | +------+-------+---------+ | 100  | Chris | 3       | +------+-------+---------+ 1 row in set (0.00 sec)