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

MySQL:WHERE क्लॉज में एकाधिक जोड़े के साथ पंक्तियों का चयन कैसे करें

यदि आप सुरुचिपूर्ण SQL के बाद हैं, तो आप पंक्ति निर्माणकर्ताओं का उपयोग कर सकते हैं:

SELECT * FROM email_phone_notes WHERE (email, phone) IN (
  ('example@sqldat.com'  , '555-1212'),
  ('example@sqldat.com', '888-1212')
  -- etc.
);

हालांकि, यह बिल्कुल भी इंडेक्स-फ्रेंडली नहीं है और किसी भी महत्वपूर्ण आकार की टेबल पर इसकी अनुशंसा नहीं की जाएगी। इसके बजाय, आप अपने वांछित जोड़े के साथ एक तालिका को अमल में ला सकते हैं और उसे अपनी तालिका के साथ जोड़ सकते हैं:

SELECT * FROM email_phone_notes NATURAL JOIN (
  SELECT 'example@sqldat.com' AS email, '555-1212' AS phone
UNION ALL
  SELECT 'example@sqldat.com', '888-1212'
-- etc.
) t;

या फिर एक (अस्थायी) तालिका को पहले से भर दें:

CREATE TEMPORARY TABLE foo (PRIMARY KEY (email, phone)) Engine=MEMORY
  SELECT email, phone FROM email_phone_notes WHERE FALSE
;

INSERT INTO foo
  (email, phone)
VALUES
  ('example@sqldat.com'  , '555-1212'),
  ('example@sqldat.com', '888-1212')
  -- etc.
;

SELECT * FROM email_phone_notes NATURAL JOIN foo;


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

  2. MySQL:तालिका को छोटा करें बनाम तालिका से हटाएं

  3. कई से कई रिश्तों को सीक्वेल कैसे करें?

  4. MySQL:OR क्लॉज को कैसे इंडेक्स करें

  5. MySQL, NULL या खाली स्ट्रिंग डालने के लिए बेहतर है?