我有一个SQL查询我需要在多个站点运行,查询将是相同的,除了“站点ID”站点ID存储在每个数据库的另一个表中,所以我认为它会更容易自动执行此操作并编写查询以在where子句中获取正确的siteid,而不是将查询更改20次。
我的查询是:
Select *
from customers
where bactive = 'true' and siteid = 'Site1'
网站存储在“帐户”表中,所以我想我可以这样做:
select *
from customers
where bactive = 'true' and siteid = database.dbo.accounts.siteid
这不起作用。
感谢任何帮助。
答案 0 :(得分:1)
如果您的网站ID与您的服务器名称相同,您可以尝试以下内容:
select *
from customers
where bactive = 'true' and siteid = @@ServerName
其中@@ serverName是SQL Server实例的系统名称
如果您的站点ID与服务器实例名称不同,您可以在“帐户”表中将实例名称添加为属性,这样您就可以在实例名称和站点ID之间建立链接:
select *
from customers
where bactive = 'true' and siteid = (SELECT Tbl_Account.siteid From Tbl_Account Where Tbl_Account.serverName = @@ServerName)
答案 1 :(得分:0)
试试这个 如果数据库在同一服务器上
select Customer.* from customers c
INNER JOIN database.dbo.accounts s ON c.siteid = c.siteid
where c.bactive = 'true'
如果数据库在其他服务器上
select Customer.* from customers c
INNER JOIN ServerName.database.dbo.accounts s ON c.siteid = c.siteid
where c.bactive = 'true'