2011-05-16 28 views
7

mysql में, क्या किसी तालिका से सभी कॉलम और डेटा प्राप्त करना संभव है, लेकिन आईडी कॉलम को न्यूल के रूप में चुनें?सभी को चुनें (लेकिन एक कॉलम शून्य के रूप में)

कुछ

तरह
SELECT *, id AS (SELECT '') FROM my_table WHERE 1 

मैं ID कॉलम में लेना चाहते हैं, तो यह गंदगी एक बाद डेटा लोड के लिए स्तंभ गणना नहीं करता है, लेकिन मैं स्तंभ के मूल्य को खत्म करना चाहते हैं तो यह 'नहीं करता है मुख्य संघर्ष का कारण नहीं है।

धन्यवाद!

+0

क्षमा करें, मुझे थोड़ा और स्पष्ट रूप से निर्दिष्ट करना चाहिए - तालिका में शायद 80 कॉलम हैं - मैं पूरी कॉलम सूची निर्दिष्ट करने के बजाय * नोटेशन का उपयोग करना पसंद करूंगा। धन्यवाद – julio

+0

+1, संभावित डुप्लिकेट [एसक्यूएल SELECT \ * \ का उपयोग कर कॉलम को बाहर निकालें [स्तंभ ए को छोड़कर \] tableA से?] (Http://stackoverflow.com/questions/729197/sql-exclude-a-column-using- चुनिंदा-कोल्लमना-से-टेबला) ठीक है, जुड़ा हुआ प्रश्न अधिक सामान्य है (mysql से बंधे नहीं) लेकिन उत्तर यहां भी लागू होते हैं। – TMS

उत्तर

9

तो, SELECT * का उपयोग करने का कोई तरीका नहीं है और कॉलम में से किसी एक को अन्य मान के साथ प्रतिस्थापित करें।

यदि आप अपने आवेदन कोड में दिए गए चयन कथन का उपयोग नहीं करना चाहते हैं, तो आप उन क्षेत्रों के साथ एक दृश्य बना सकते हैं और आईडी को हटा दिया गया है। आपको अभी भी कम से कम एक बार सभी कॉलम नाम देना होगा।

select NULL as ID, t.col2, t.col3, t.col4 from mytable t where col2 = 1 

यहाँ अपने स्तंभ नाम के सभी प्राप्त करने के लिए आसान तरीका है:

SELECT column_name FROM information_schema.columns WHERE table_name = mytable 
+0

धन्यवाद विनी - यही वह है जो मैंने साथ समाप्त किया। – julio

0

आप ऐसा नहीं कर सकते हैं। एसक्यूएल में इसकी अनुमति नहीं है। आपको सभी फ़ील्ड लिखना चाहिए और फिर आईडी के लिए शून्य कहना चाहिए।

SELECT a,b,c,d,e, id as NULL from table

1

क्या आप

के बारे में
SELECT *, NULL AS id FROM my_table 

हो id दो बार सूचीबद्ध हैं, ताकि आप सभी कॉलम नामों में * का विस्तार करने की जरूरत है, हर तालिका के लिए आप इस पर चलाना चाहते हैं।

(यदि आप कॉलम नाम स्वचालित रूप से निकाले जाने के लिए चाहते हैं, तो आप शायद विक्रेता-विशिष्ट कार्यों का उपयोग कर सकते हैं; मुझे याद नहीं है कि MySQL के पास इस स्थिति के लिए कोई है)।

5
SELECT NULL AS ID, Column1, Column2, ..., ColumnN 
    FROM my_table 
0

आप की तरह कुछ कर सकते हैं:

SELECT null AS id, t.* FROM my_table t 

लेकिन यह आईडी दो बार शामिल होंगे । यदि आप केवल शून्य आईडी कॉलम चाहते हैं तो आपको कॉलम निर्दिष्ट करना होगा।

SELECT null As id, t.col1, t.col2 FROM my_table t 
1

यह लग रहा है के बाद से वैसे भी इस तरह एक डेटा डंप के लिए तैयारी, एक अस्थायी तालिका

CREATE TEMP TABLE t000 AS SELECT * FROM my_table; -- or INSERT INTO 
UPDATE t000 SET id = NULL; 
0

सही मायने में संबंधपरक भाषा Tutorial D एक प्रक्षेपण (सभी अन्य अन्य प्रासंगिक संबंधपरक ऑपरेटर) की अनुमति देता है व्यक्त किया जा करने के लिए उपयोग उदाहरणों को रखने के बजाय हटाए जाने वाले गुणों के संदर्भ में

my_relvar { ALL BUT ID } 

(लेकिन निश्चित रूप से सही मायने में रिलेशनल ट्यूटोरियल डी जा रहा है अशक्त की एक अवधारणा नहीं है!)

दुख की बात है, एसक्यूएल इस तरह के एक भाषा की सुविधा नहीं है और आप पूरे अक्षरों में लिखावट में सभी कॉलम नामों में लिखना चाहिए ।

संबंधित मुद्दे