MySQL使用LEFT JOIN、UNION ALL搭配INTO OUTFILE导出CSV语法错误求解
问题排查
- 核心语法错误是第二个
SELECT查询的字段列表外层多包裹了一层括号,MySQL会将括号内的多字段识别为行构造器,既不符合基础SELECT语法要求,也无法和UNION前的4个单列查询做列数匹配 - 第二个错误是
INTO OUTFILE子句的位置错误,针对UNION联合查询的导出操作,需要将导出配置放在整个联合查询的末尾,放在单个SELECT内会触发语法报错 - 额外说明:UNION查询的列名默认继承第一个SELECT的返回值,刚好匹配你要导出自定义表头的需求,第二个SELECT里的字段别名不需要写,写了也不会生效
修正后代码
SELECT 'Data1', 'Data2', 'Data3', 'Date' UNION ALL SELECT users.name, users.email, IF(trip.active, 'SI', 'NO'), trip.updated_at FROM users LEFT JOIN trip ON users.id = trip.user_id INTO OUTFILE '你实际的文件存储路径' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' -- 可选添加,避免字段内容含逗号时导出格式错乱 LINES TERMINATED BY '\r\n';
内容的提问来源于stack exchange,提问作者Lautaro
相关产品推荐
相关产品推荐

