मैं मान रहा हूं (और उम्मीद कर रहा हूं) कि आप उपयोगकर्ता का नाम दो बार संग्रहीत नहीं कर रहे हैं, क्योंकि इससे उपयोगकर्ता द्वारा अपना नाम बदलने पर डेटा गुणवत्ता संबंधी समस्याएं होती हैं।
मान लें कि तालिकाएँ नीचे की तरह संरचित हैं:
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);
आप GROUP BY
. का उपयोग कर सकते हैं और HAVING
क्लॉज जो आपको UserID
देगा 1 से अधिक (या जो भी संख्या आप चुनते हैं) ऑर्डर वाले सभी उपयोगकर्ताओं में से। फिर, आप उसमें शामिल हों Members
नाम पाने के लिए टेबल।
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
हालांकि, यदि आपके पास पहले से ही नाम संग्रहीत हैं (और वह बदल नहीं रहा है), तो आप JOIN
को छोड़ सकते हैं नीचे की तरह:
SELECT
UserID,
Name
FROM
Orders
GROUP BY
UserID,
Name
HAVING
COUNT(OrderID) > 1