【问题标题】:T-SQL : Searching values in several table [duplicate]T-SQL:在几个表中搜索值[重复]
【发布时间】:2014-02-27 09:32:34
【问题描述】:

我有几个表格,列有Archive。在触发器上,我想检查该值是否存在于多个表中。

当然,我可以为每个表复制查询,但我认为使用变量执行此操作会更容易。

我有一个表 RefTable,其中所有表都在数据集 ID, TblName 中创建。

所有表都在同一个数据库中

这是我想要的,但它不起作用:

IF EXISTS (SELECT archive from (select TblName FROM RefTable) WHERE archive = @var)

【问题讨论】:

  • @RahulTripathi - 是的,所以我们可以将其作为此类问题的所有其他示例的副本关闭。为此,需要某种形式的动态 SQL - 您不能将变量用于表名(或任何其他标识符)。此站点上有许多示例 - 请查找使用您的特定 RDBMS 供应商的示例(尽管这些答案中的大多数都与 db 无关)。

标签: sql sql-server tsql


【解决方案1】:

您肯定必须使用某种形式的动态 SQL 来执行此搜索。一个例子(如果你愿意,你可以把它引入一个函数):

declare @sqlstmt nvarchar(MAX)
declare @tablename nvarchar(100)
declare @username nvarchar(100)

set @tablename = 'UserProfile'
set @username = 'janed'
set @sqlstmt = 'select count(*) from ' + @tablename + ' where username = ''' + @username + ''''

exec sp_executesql @sqlstmt 

【讨论】:

    猜你喜欢
    • 2021-10-24
    • 2017-03-22
    • 2017-05-18
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    相关资源
    最近更新 更多