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

मैं MySQL में किसी तालिका से * का चयन कैसे कर सकता हूं लेकिन कुछ कॉलम छोड़ सकता हूं?

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

<मजबूत>1. एक फ़ंक्शन बनाएं जो सभी वांछित कॉलम नामों को पुनः प्राप्त करता है:(मैंने इस फ़ंक्शन को होल्ड करने के लिए फंक्शन नामक एक स्कीमा बनाया है)

DELIMITER $$

CREATE DEFINER=`root`@`%` FUNCTION `getTableColumns`(_schemaName varchar(100), _tableName varchar(100), _omitColumns varchar(200)) RETURNS varchar(5000) CHARSET latin1
BEGIN
    SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.columns 
    WHERE table_schema = _schemaName AND table_name = _tableName AND FIND_IN_SET(COLUMN_NAME,_omitColumns) = 0 ORDER BY ORDINAL_POSITION;
END

चुनिंदा स्टेटमेंट बनाएं और निष्पादित करें:

SET @sql = concat('SELECT ', (SELECT 
functions.getTableColumns('test', 'employees', 'age,dateOfHire')), ' FROM test.employees'); 
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;

<मजबूत>2. या बिना कोई फंक्शन लिखे आप यह कर सकते हैं:

SET @sql = CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM 
information_schema.columns WHERE table_schema = 'test' AND table_name = 
'employees' AND column_name NOT IN ('age', 'dateOfHire')), 
' from test.eployees');  
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;

*परीक्षण को अपने स्वयं के स्कीमा नाम से बदलें

**कर्मचारियों को अपने टेबल नाम से बदलें

*** आयु, दिनांकऑफहेयर को उन कॉलमों से बदलें जिन्हें आप छोड़ना चाहते हैं (आप सभी कॉलम वापस करने के लिए इसे खाली छोड़ सकते हैं या छोड़ने के लिए सिर्फ एक कॉलम नाम दर्ज कर सकते हैं)

** **आप अपनी आवश्यकताओं को पूरा करने के लिए फ़ंक्शन में वर्चर्स की लंबाई समायोजित कर सकते हैं



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीडीओ मुक्त परिणाम

  2. तालिका से डुप्लिकेट पंक्तियों को हटाना

  3. mysql क्वेरी का उपयोग करके सभी नाम खोजें जो 'a' अक्षर से शुरू होता है

  4. आप MySQL क्वेरी में स्ट्रिंग से संख्यात्मक मान कैसे निकालते हैं?

  5. क्या MySQL में ट्री स्ट्रक्चर टेबल को एक ही क्वेरी में, किसी भी गहराई तक क्वेरी करना संभव है?