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

MySQL एकाधिक आईडी लुकअप

MySQL दृश्यों को अनुक्रमित नहीं कर सकता, इसलिए आप जो चाहते हैं वह MySQL . में असंभव है ।

आप स्फिंक्स जैसे बाहरी पूर्ण टेक्स्ट इंडेक्सिंग इंजन का उपयोग कर सकते हैं और JOINS के साथ क्वेरी का उपयोग करके वहां डेटा लोड कर सकते हैं।

वैकल्पिक रूप से, आप एक असामान्य तालिका बना सकते हैं:

CREATE TABLE ftsearch
        (
        teacherId INT PRIMARY KEY,
        teacherBiography TEXT,
        subject1 TEXT,
        subject2 TEXT,
        subject3 TEXT,
        )
ENGINE=MyISAM

और इसे इस क्वेरी से भरें:

INSERT
INTO    ftsearch
SELECT  teacherId, teacherBiography,
        s1.name, s2.name, s3.name
FROM    teacherProfile
LEFT JOIN
        subject s1
ON      s1.id = subjectOneId 
LEFT JOIN
        subject s2
ON      s2.id = subjectTwoId 
LEFT JOIN
        subject s3
ON      s3.id = subjectThreeId 

समय पर।

दरअसल, अगर आपकी सभी टेबल MyISAM हैं , आप एक पूर्ण पाठ अनुक्रमणिका बनाए बिना, शामिल होने के लिए पूर्ण पाठ खोज क्वेरी (बूलियन मोड में) लागू कर सकते हैं।

मान लें, यदि आप '+Jones +math +physics' . की खोज कर रहे हैं , जहां Jones एक शिक्षक का उपनाम है और math और physics विषय हैं, आप यह प्रश्न कर सकते हैं:

SELECT  teacherId, teacherBiography,
        s1.name, s2.name, s3.name
FROM    teacherProfile
LEFT JOIN
        subject s1
ON      s1.id = subjectOneId 
LEFT JOIN
        subject s2
ON      s2.id = subjectTwoId 
LEFT JOIN
        subject s3
ON      s3.id = subjectThreeId 
WHERE   MATCH(teacherBiography) AGAINST ('+Jones' IN BOOLEAN MODE)
        AND MATCH(t.teacherBiography, s1.name, s2.name, s3.name) AGAINST ('+Jones +math +physics' IN BOOLEAN MODE)

MATCH(teacherBiography) AGAINST ('+Jones') एक FULLTEXT . का उपयोग करेगा teacher . पर अनुक्रमणिका , यदि कोई; दूसरा MATCH परिणामों को ठीक-ठीक फ़िल्टर कर देगा।

OR . से जुड़ी क्वेरी हालाँकि, परिस्थितियाँ या प्रासंगिकता छँटाई अधिक जटिल है।




  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 IN ऑपरेटर का उपयोग करके अपरिभाषित राशि की क्वेरी कर रहा है

  2. Neo4j - Cypher का उपयोग करके एक नोड हटाएं

  3. डेटाबेस में मूल्य संग्रहीत करने में समस्या

  4. मैं अधिकतम दिनांक के साथ 3 एसोसिएशन टेबल में फ़ील्ड मान कैसे प्राप्त कर सकता हूं?

  5. MySQL विदेशी कुंजी बाधाएं, कैस्केड हटाएं