如何获取SQL连接表的全部表头并保持原有顺序?
获取MySQL连接表带表前缀的表头并保持顺序
执行查询提取元数据(推荐)
直接运行你的连接查询并加上LIMIT 0(仅返回结果结构,不返回实际数据),然后通过编程语言的数据库驱动获取结果的元数据:SELECT * FROM STUDENT LEFT JOIN CLASS ON STUDENT.SID = CLASS.SID LIMIT 0;比如在Python中,通过
cursor.description可以获取每个字段的完整名称,得到的就是Student.SID这类带表前缀的格式,且顺序和查询返回的结果完全一致。通过信息模式手动指定顺序查询
若不想执行实际连接查询,可以查询INFORMATION_SCHEMA.COLUMNS,并手动指定表的顺序和列的自然顺序:SELECT CONCAT(table_name, '.', column_name) AS full_column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name IN ('STUDENT', 'CLASS') ORDER BY CASE table_name WHEN 'STUDENT' THEN 1 WHEN 'CLASS' THEN 2 END, ordinal_position;这里通过
CASE语句保证表的顺序和你连接时的顺序一致,ordinal_position确保每个表内的列顺序和原表结构一致。原方法报错原因
SHOW COLUMNS FROM仅支持单个表名作为参数,无法直接传入连接查询的结果集,因此执行会失败。
内容的提问来源于stack exchange,提问作者Maartje Gubbels
相关产品推荐
相关产品推荐

