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