You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server使用SELECT *时如何让返回列别名同时带表名和字段名

解决方案

通用方案(适配所有关系型数据库)

核心思路是通过查询数据库元数据表,自动拼接带表名前缀的列别名查询语句,无需手动逐个书写字段:

  • MySQL 示例:
SELECT GROUP_CONCAT(
  CONCAT(table_name, '.', column_name, ' AS `', table_name, '.', column_name, '`')
  ORDER BY table_name, ordinal_position
) AS select_clause
FROM information_schema.columns 
WHERE table_schema = '你的数据库名' 
  AND table_name IN ('table1', 'table2', 'table3'); -- 直接填入你需要查询的所有表名即可

执行上述语句会直接输出完整的SELECT子句,替换原有查询的SELECT *即可得到符合需求的带前缀列名结果。

  • PostgreSQL 示例:
SELECT string_agg(
  format('%I.%I AS "%I.%I"', table_name, column_name, table_name, column_name),
  ', ' ORDER BY table_name, ordinal_position
) AS select_clause
FROM information_schema.columns
WHERE table_schema = 'public'
  AND table_name IN ('table1', 'table2', 'table3');

数据库原生简化方案

部分数据库提供更简便的结构化输出方案,连动态生成SQL的步骤都可以省略:

  • PostgreSQL 可以通过JSON输出避免字段重名:
SELECT to_json(table1) AS table1, to_json(table2) AS table2, to_json(table3) AS table3
FROM table1, table2, table3;

返回结果中每个表对应一个JSON对象,可直接通过表名->'字段名'的方式取对应值,20-30张表的场景仅需书写20-30次to_json(表名) AS 表名即可,无需处理字段。

  • SQL Server 可通过FOR JSON语法实现类似的结构化输出效果。

注意:标准SQL语法本身没有定义SELECT *自动追加表名前缀的规则,上述方案均可避免手动罗列上百个字段的繁琐操作,完全满足你的使用需求。

内容的提问来源于stack exchange,提问作者Jota Pardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:06:04