आप उस कॉलम का चयन नहीं कर सकते जिसे आपने अपने 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
. के लिए एक यादृच्छिक मान मिलेगा और शायद आपकी रकम गलत है और साथ ही आपको मेरी राय में एक आकस्मिक कार्टेशियन उत्पाद मिलता है। लेकिन यह एक अन्य प्रश्न का विषय है।