我有一个SELECT查询,它多次引用同一个表。它基本上转到Orders表和针对Users表的交叉引用字段以获取信息。
SELECT o1.orderid,
o1.productname,
u1.*,
u2.*,
u3.*
FROM orders o1
INNER JOIN users u1
ON o1.customer = u1.username
INNER JOIN users u2
ON o1.supplier = u2.username
INNER JOIN users 3
ON o1.manufacturer = u3.username
u1,u2,u3都会返回相同的字段名。我实际上希望u1返回其前缀为“customer”的列,而u2则返回其前缀为“supplier”的列,依此类推。
所以我最终得到了例如:
u1.AddressLine1 AS 'CustomerAddressLine1'
u2.AddressLine1 AS 'SupplierAddressLine1'
u3.AddressLine1 AS 'ManufacturerAddressLine1'
我不想为每一列编写类似上面的代码,这将花费太长时间。是否有一种简单的方法可以一次性重命名它们?
答案 0 :(得分:3)
没有自动方法可以做到这一点。但是,您可以很容易地生成代码。
例如:
select ' u1.'+column_name+' as customer_'+column_name+','
from Information_Schema.columns
where table_name = 'users' and schema_name = 'dbo';
然后,您可以将结果复制到查询中。
答案 1 :(得分:1)
不在SQL中没有。只需在您喜欢的编辑器中编写一个宏来编写“AS”部分。
re:我不想为每一列编写如上所示的代码,这将花费太长时间。
这就是软件工程的全部意义所在。做对了。