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

परिणामों की शर्तों के आधार पर mysql क्वेरी में प्रविष्टियाँ डालें या छोड़ें

यदि आपको यह पता लगाने की आवश्यकता है कि कौन से रिकॉर्ड एक मिलान लॉगआउट रिकॉर्ड के बिना लॉगिन का प्रतिनिधित्व करते हैं और इसके विपरीत, तो यह आपकी तालिका को एक अद्वितीय सत्र आईडी के साथ विस्तारित करने में सहायक होगा। एक कॉलम जोड़ें session_id , लॉगिन पर इसका मूल्य उत्पन्न करें, इसे सत्र में याद रखें और उसी मान को session_id पर रखें लॉगआउट त्रुटि के लिए। यह प्रश्नों को बहुत सरल करेगा।

यदि आपको ऐसी क्वेरी की आवश्यकता है जो लापता लॉगिन रिकॉर्ड जोड़ दे, तो निम्न प्रयास करें:

SELECT 0 AS idLoginnLog, l1.username, ADDTIME(l1.time, '-0:30:0') AS time, 1 AS type
FROM logs AS l1
  LEFT JOIN logs AS l2
  ON (l1.username=l2.username AND l2.type=1 AND l2.time BETWEEN ADDTIME(l1.time, '-0:30:0') AND l1.time)
WHERE
  l1.type=0
  AND l2.idLoginLog IS NULL

(Fiddle ।) आप या तो परिणाम को तालिका में सम्मिलित कर सकते हैं (INSERT INTO logs (...) SELECT ... ) या अपनी मूल क्वेरी में UNION में क्वेरी जोड़ें।

जैसा कि @OlivierCoilland द्वारा उल्लेख किया गया है, क्वेरी बहुत जटिल हो रही है और आप आवेदन पक्ष पर विश्लेषण पर विचार कर सकते हैं। क्योंकि मुझे लगता है कि लॉग टेबल बहुत बड़ी है, आपको भरोसा नहीं करना चाहिए कि आप स्मृति में सभी प्रविष्टियों को फिट करेंगे। आपको शायद किसी प्रकार की "स्लाइडिंग विंडो" तकनीक की आवश्यकता होगी।

चौथा विकल्प बेजोड़ लॉगआउट रिकॉर्ड को हटाना है। मेरे समाधान को एक अस्थायी तालिका की आवश्यकता है, इसलिए मैं यहां संपूर्ण (काफी लंबा) कोड पेस्ट नहीं करता, बस बेला




  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. एक समग्र प्राथमिक कुंजी जोड़ने के लिए तालिका बदलें

  3. अद्वितीय रिकॉर्ड निकालने के लिए एसक्यूएल क्वेरी

  4. mysql डेटाबेस से डेटाग्रिडव्यू में डेटा कैसे आयात करें?

  5. क्या एक साधारण वेब दस्तावेज़ सिस्टम (या मूल CMS) पर RDBMS बनाम फ़्लैट फ़ाइलों का उपयोग करने के कोई वास्तविक लाभ हैं?