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

SQL सबक्वेरी के परिणाम के साथ 'LIKE' का उपयोग करना

सबसे पहले, यह क्वेरी चाहिए ठीक काम नहीं कर रहा:

SELECT *
From Customers
WHERE Customers.ContactName = (SELECT FirstName
                               from Employees as E, orders as O
                               WHERE LIMIT 1);

क्योंकि WHERE LIMIT 1 उचित एसक्यूएल नहीं है। और, आपको उचित join . का उपयोग करना सीखना चाहिए वाक्य - विन्यास। संभवतः, आप चाहते हैं:

SELECT c.*
From Customers c
WHERE c.ContactName = (SELECT FirstName
                       FROM Employees as E JOIN
                            Orders as O
                            ON . . .
                       LIMIT 1
                      );

आप संभवतः LIKE जोड़ सकते हैं = . के बजाय और सबक्वेरी में '%':

WHERE c.ContactName LIKE (SELECT CONCAT('%', FirstName, '%') . . .

लेकिन मैं इसे EXISTS . का उपयोग करके लिखूंगा :

SELECT c.*
From Customers c
WHERE EXISTS (SELECT 1
              FROM Employees as E JOIN
                   Orders as O
                   ON . . .
              WHERE c.ContactName LIKE CONCAT('%', FirstName, '%')
             );

यह आपकी क्वेरी के समान कार्य नहीं करता है। यह कुछ और उचित करता है। सबक्वेरी से एक यादृच्छिक नाम की तुलना करने के बजाय, यह निर्धारित करेगा कि क्या कोई कोई है सबक्वेरी में मेल खाता है। यह क्वेरी के लिए अधिक उचित इरादा लगता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL - त्रुटि कोड 1005 त्रुटि संख्या 121 के साथ

  2. उत्पाद विशेषताओं के लिए डेटाबेस स्कीमा

  3. SQL IN () क्लॉज में मानों के क्रम से आदेश देना

  4. क्वेरी द्वारा समूह के साथ मैसकल मैक्स

  5. MySQL यूनियन डिस्टिंक्ट