我在SQL Server数据库中有许多具有大量列(> 100)的表。在某些情况下,当选择(使用视图)时,我需要用固定的结果值而不是行中的数据替换其中一列。 有没有办法使用像
这样的东西select table.*, 'value' as Column1 from table
如果Column1是表中的列名吗?
当然,我可以列出select语句中预期的所有列,用值替换一个。 但是,这非常不方便,如果在表中添加或删除列,我必须保留3或4个视图。
答案 0 :(得分:2)
不,你必须在这种情况下指定列。
如果经常更换表格,你会遇到更严重的问题。这可能是大型架构缺陷的信号。
无论如何,列出所有列而不是{{1}}是一种很好的做法,因为如果列号将更改,则可能会导致级联错误。
答案 1 :(得分:0)
正如其他回复所指出的,这不能在一个声明中完成。但是,有一种解决方法并不完美,但确实避免了手动列出列的需要:将初始未修改的查询保存到临时表,search(n, u, v) {
if (n == 0 || isWall(u, v))
return;
board[v][u] = 2;
search(n - 1, u, v - 1);
search(n - 1, u + 1, v);
search(n - 1, u, v + 1);
search(n - 1, u - 1, v);
return;
}
需要覆盖的列,然后 {{ 1}} 结果:
update
这有很多缺点。复杂性、性能等。但它非常灵活,解决了防止更改主表 (select
) 破坏查询或需要手动更改的主要问题。如果您尝试生成 SQL,这一点尤其重要。