जब तक आप *
. का उपयोग कर रहे हैं वाइल्डकार्ड, आप पाएंगे कि एक ही नाम के कॉलम आपके सहयोगी सरणी में समान कुंजियों को अधिलेखित कर देंगे।
आपको कम से कम एक टेबल के कॉलम को कॉलम एलियास देना होगा:
select t1.*, t2.col1 as t2col1, t2.col2 as t2col2, ...
from table as t1 LEFT JOIN table as t2 ON t1.id=t2.rank
या फिर आप वाइल्डकार्ड का उपयोग कर सकते हैं, लेकिन पंक्ति को एक क्रमिक सरणी के रूप में प्राप्त कर सकते हैं:
$row = mysql_fetch_array($result, MYSQL_NUM);
echo $row[4];
अपनी टिप्पणी दोबारा दें:एसक्यूएल में सिर्फ *
है वाइल्डकार्ड का अर्थ है "किसी दी गई तालिका के सभी कॉलम, उनके प्राकृतिक नामों से।" आपको स्तंभ-दर-स्तंभ के आधार पर स्पष्ट रूप से स्तंभों को उपनाम देना होगा।
अपवाद:यदि आप SQLite का उपयोग करते हैं, तो एक pragma full_column_names
है।
विकल्प जो परिणाम सेट को योग्य कॉलम नाम लौटाता है, ताकि आप *
. का उपयोग कर सकें लेकिन कुंजियाँ तालिका उपनामों के साथ उपसर्ग करती हैं। यह SQLite-विशिष्ट और गैर-मानक SQL है।