如何使用where子句中的列条目过滤查询

时间:2015-09-03 11:04:07

标签: sql sql-server

我有一个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

这不起作用。

感谢任何帮助。

2 个答案:

答案 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'