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

एसयूएम (कुछ) के रूप में उपयोग करते समय फ़ील्ड सूची में अज्ञात कॉलम a

आप उस कॉलम का चयन नहीं कर सकते जिसे आपने अपने SELECT . में समान स्तर पर परिभाषित किया है खंड। यदि आप किसी व्यंजक का पुन:उपयोग करना चाहते हैं, तो आपको एक व्युत्पन्न तालिका का उपयोग करना होगा:

SELECT x.*, (common_p_count+common_r_count)
FROM (
  SELECT 
    a.user AS a_user, 
    b.user AS b_user, 
    SUM(a.post = b.post) AS common_p_count,
    SUM(a.option = b.option) AS common_r_count
  FROM response a, response b
  WHERE a.user = '1' AND b.user != '1' group by b.user
) x

या, ज़ाहिर है, आप केवल अभिव्यक्ति दोहराते हैं:

SELECT 
  a.user AS a_user, 
  b.user AS b_user, 
  SUM(a.post = b.post) AS common_p_count,
  SUM(a.option = b.option) AS common_r_count,
  (SUM(a.post = b.post) + SUM(a.option = b.option))
FROM response a, response b
WHERE a.user = '1' AND b.user != '1' group by b.user

यदि आप केवल उस अभिव्यक्ति द्वारा आदेश देना चाहते हैं, तो यह बिना किसी तरकीब के संभव है (लेकिन आप अभी भी SELECT नहीं कर सकते हैं आपकी क्वेरी के समान स्तर पर अभिव्यक्ति)

SELECT 
  a.user AS a_user, 
  b.user AS b_user, 
  SUM(a.post = b.post) AS common_p_count,
  SUM(a.option = b.option) AS common_r_count
FROM response a, response b
WHERE a.user = '1' AND b.user != '1' group by b.user
ORDER BY common_p_count + common_r_count

इसका कारण यहां इस ब्लॉग आलेख में समझाया गया है

साइड-नोट

उपरोक्त स्पष्टीकरणों के अलावा, निश्चित रूप से, मुझे नहीं लगता कि आपकी क्वेरी सही है। चूंकि आप केवल b.user . द्वारा समूहीकृत कर रहे हैं , आपको a.user . के लिए एक यादृच्छिक मान मिलेगा और शायद आपकी रकम गलत है और साथ ही आपको मेरी राय में एक आकस्मिक कार्टेशियन उत्पाद मिलता है। लेकिन यह एक अन्य प्रश्न का विषय है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CAST ऑपरेटर का उपयोग करके VARCHAR कॉलम को FLOAT के रूप में सॉर्ट करना MySQL में काम नहीं करता है

  2. JS MySQL डेटाबेस को क्वेरी नहीं कर सकता। त्रुटि:कनेक्शन। क्वेरी एक फ़ंक्शन नहीं है

  3. PHP के साथ MySQL से MySQL क्लोन

  4. हम क्लॉज में स्टोर प्रक्रिया को कैसे कॉल कर सकते हैं

  5. मेरा SQL - त्रुटि कोड:1010। डेटाबेस छोड़ने में त्रुटि (rmdir नहीं कर सकता; त्रुटि:13)