Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL - Pilih baris jika muncul lebih dari x kali di tabel lain

Saya berasumsi (dan berharap) bahwa Anda tidak menyimpan nama pengguna dua kali, karena hal itu menyebabkan masalah kualitas data saat pengguna mengubah namanya.

Dengan asumsi tabel terstruktur seperti di bawah ini:

CREATE TABLE
  Members
(
    UserID INT,
    Name VARCHAR(15)
);

INSERT INTO
  Members
VALUES
(111, 'Peter'),
(222, 'Bart'),
(333, 'Joe'),
(444, 'Andrew');

CREATE TABLE
  Orders
(
   OrderID INT,
   UserID INT
);

INSERT INTO
  Orders
VALUES
(777, 111),
(888, 333),
(999, 111),
(101, 444),
(102, 111),
(103, 333);

Anda dapat menggunakan GROUP BY dan HAVING klausa yang akan memberi Anda UserID dari semua pengguna dengan lebih dari 1 (atau nomor mana pun yang Anda pilih) pesanan. Kemudian, Anda gabungkan itu ke Members tabel untuk mendapatkan namanya.

SELECT
  Orders.UserID,
  Members.Name
FROM
  Orders
INNER JOIN
  Members
  ON Orders.UserID = Members.UserID
GROUP BY
  UserID,
  Members.Name
HAVING
  COUNT(OrderID) > 1;

SQLFiddle:http://sqlfiddle.com/#!9/1dadc4/2

Namun, jika Anda sudah memiliki nama yang tersimpan (dan itu tidak berubah), maka Anda dapat melewati JOIN seperti di bawah ini:

SELECT
  UserID,
  Name
FROM
  Orders
GROUP BY
  UserID,
  Name
HAVING
  COUNT(OrderID) > 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara memunculkan kesalahan dalam fungsi MySQL

  2. Beberapa Tabel Pilih vs. GABUNG (kinerja)

  3. Kesalahan fatal:panggilan ke fungsi anggota fetch_array() di boolean

  4. MySQL Jelaskan batas baris

  5. Cadangkan basis data menggunakan kueri tanpa menggunakan mysqldump