Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL - अन्य तालिका में x से अधिक बार दिखाई देने पर पंक्ति का चयन करें

मैं मान रहा हूं (और उम्मीद कर रहा हूं) कि आप उपयोगकर्ता का नाम दो बार संग्रहीत नहीं कर रहे हैं, क्योंकि इससे उपयोगकर्ता द्वारा अपना नाम बदलने पर डेटा गुणवत्ता संबंधी समस्याएं होती हैं।

मान लें कि तालिकाएँ नीचे की तरह संरचित हैं:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysqldump का उपयोग करके एकल MySQL तालिका को कैसे पुनर्स्थापित करें?

  2. MYSQL जॉइन रिजल्ट्स सेट वाइप रिजल्ट्स IN () के दौरान क्लॉज में कहां?

  3. अगर मौजूद है तो MySQL को अपडेट करें

  4. MySQL कथन का उपयोग करके दो MySQL तालिकाओं के बीच अंतर कैसे खोजें?

  5. mysql_result () पैरामीटर 1 को संसाधन, बूलियन दिए जाने की अपेक्षा करता है