SQL多表连接查询:如何避免id列重复并自定义列名?
解决SQL左连接后ID列重复显示的问题
问题出在你用了SELECT a.id as table_id, *——这里的*会把两张表的所有列都查出来,包括pipeline_tables的原始id列、pipeline_columns的id列,再加上你单独定义的table_id,自然会出现重复的ID列。
要实现只显示table_id和column_id两个ID列,同时保留其他所有非ID列,你需要避免使用*,明确指定要查询的列:
SELECT a.id AS table_id, b.id AS column_id, -- 列出pipeline_tables表除id外的所有列,示例: a.table_name, a.create_time, -- 列出pipeline_columns表除id外的所有列,示例: b.column_name, b.data_type FROM [CFG].[pipeline_tables] a LEFT JOIN [CFG].[pipeline_columns] b ON a.[id] = b.[pipeline_tables_id]
如果两张表的非ID列非常多,不想逐个列出,也可以用表别名指定对应表的所有列,但要注意:SQL不支持直接通过*排除某列,所以还是建议明确列名——这不仅能解决你的问题,还能让SQL语句更清晰,避免后续表结构变更时出现意外问题。
内容的提问来源于stack exchange,提问作者Greencolor
相关产品推荐
相关产品推荐

