2014-09-03 150 views
0

我有一个导出为CSV文件的MySQL查询。收到CSV的人要求我添加列标题。很显然,我可以在查询中硬编码它们,但是想知道是否有办法返回一个包含所有已查询列的名称的行?mysql查询返回列名

我目前的查询如下 - 我希望以编程方式包含列标题,如果我可以只是万一我忘记更改它时进行更改。

感谢

SET @sql_text = 
    CONCAT (
    "SELECT 
     cf_id as FoundUsFrom, 
     firstname as CustomerName1, 
     lastname as CustomerName2, 
     address1 as CAddress1, 
     address2 as CAddress2, 
     '' as CAddress3, 
     towncity as CCity, 
     postcode as CPostCode, 
     email as 'email', 
     telephone as HomePhone, 
     mobile as MobilePhone, 
     '' as WorkPhone, 
     chidname as PName, 
     '' as ToBeAged, 
     partyaddress1 as PAddress1, 
     partyaddress2 as PAddress2, 
     '' as PAddress3, 
     partytowncity as PCity, 
     partypostcode as PPostCode, 
     /*NEED VALIDATION*/ 
     celebrating as PType, 
     partydate as PDate, 
     partyboffinstart as PTime, 
     specialinstructions as SpecialInst, 
     numberguests as Guests, 
     IF(airexp = '','N','Y') as Air, 
     IF(chemcocklngexp = '','N','Y') as CocktailLong, 
     IF(chemcockshtexp = '','N','Y') as CocktailShort, 
     IF(chemreact = '','N','Y') as Reactions, 
     IF(dryicebolton = '','N','Y') as DryIce, 
     IF(electricitybolton = '','N','Y') as Electricity, 
     IF(flightbolton = '','N','Y') as Flight, 
     IF(fourelementsbolton = '','N','Y') as Elements, 
     IF(magicbolton = '','N','Y') as Magic, 
     IF(slimebolton = '','N','Y') as Slime, 
     IF(sweetbolton = '','N','Y') as Sweets, 
     IF(miniimpsbolton = '','N','Y') as MiniImps, 
     IF(extravaganzabolton = '','N','Y') as Extravaganza, 
     IF(dryicecreambolton = '','N','Y') as AIceCream, 
     IF(rocketbolton = '','N','Y') as ARocket, 
     IF(foodbreakbolton = '','N','Y') as AFood, 
     partybags as PBags, 
     deluxepartybags as PDBags 

INTO OUTFILE 'PATHTO/data/bookings", 
DATE_FORMAT(NOW(), '%Y%m%d%s'), 
".csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' 
LINES TERMINATED BY '\n' 
FROM sb_chronoforms_data_bookingformcombined" 
); 

PREPARE s1 FROM @sql_text; 
EXECUTE s1; 
DROP PREPARE s1; 
+0

您可以使用union;)在第一行返回列名称 – 2014-09-03 16:54:54

+0

这可能有助于[如何将表列标题添加到sql select语句](http://stackoverflow.com/questions/4964162/how-to -add-表列标题到SQL-select语句) – Dan 2014-09-03 16:55:16

回答

0

登录电子,因为它是另一种方式来解决问题:

从dual UNION中选择'col_1','col_2','col_3','col_4'全部从table_1中选择 col_1,col_2,col_3,col_4;

0

这是一个奇怪的问题:)尝试

SELECT 
    * 
FROM 
    information_schema.COLUMNS 
where 
    table_chema = 'your_schema' 
     and table_name = 'your_table'; 

不是使用ORDINAL_POSITION这分别显示相关的列名