Sql server 2008 如何查找特定数据存在于哪个表中

Sql server 2008 如何查找特定数据存在于哪个表中,sql-server-2008,Sql Server 2008,我有5张表,分别是LED产品、电子产品、音响产品、视频产品和结构产品。每个表中的列如下:物料名称、零件号、计量单位。我想找出哪个表中不存在特定零件。哪种方法最快?试试这个 在查询中,在where子句中指定所需的列名。它将显示列名和表名 从信息模式中选择表名、列名。列名='PartNo'的列请尝试以下代码 从信息模式中选择表名、列名。列名='PartNo'和表名位于'LEDProducts','ElectricalProduts','AudioProducts','VideoProducts','

我有5张表,分别是LED产品、电子产品、音响产品、视频产品和结构产品。每个表中的列如下:物料名称、零件号、计量单位。我想找出哪个表中不存在特定零件。哪种方法最快?

试试这个

在查询中,在where子句中指定所需的列名。它将显示列名和表名

从信息模式中选择表名、列名。列名='PartNo'的列请尝试以下代码

从信息模式中选择表名、列名。列名='PartNo'和表名位于'LEDProducts','ElectricalProduts','AudioProducts','VideoProducts','Structure Products'

它将选择给定的列名,其中包含LED产品、电气产品、音频产品、视频产品和结构产品的表名

您可以使用union:

Select TabName from (
  select 'LEDProducts' as TabName, PartNo from LEDProducts
    union
  select 'ElectricalProduts', PartNo from ElectricalProduts 
    union 
  select 'AudioProducts', PartNo from AudioProducts
    union
  select 'VideoProducts',  PartNo from VideoProducts
    union
  select 'StructureProducts',  PartNo from StructureProducts
) AllProducts
where PartNo = 123
如果您经常运行这样的查询,那么为所有产品创建一个视图可能是有意义的

然后可以使用如下查询:

select TabName from AllProducts where PartNo = 123

根据您的使用情况,您应该考虑创建一个PoToNoLoopUp表,该表包含PARTNO、Table、ID、TabLeNm列。然后将所有零件号和记录ID复制到此表中。根据您的需要,可以在每次插入/更新/删除时进行复制,也可以定期进行批量传输


使用此解决方案,您可以使用更多的空间,但您会发现包含partno的表只有一个可以优化的查询。它将比使用游标或联合执行多达5个查询要快,而这些查询通常都要慢得多。

这样,您就可以得到包含“PartNo”列的所有表。下一步是遍历所有表并检查它是否包含特定的PartNo。其他表也有PartNo列,但我只想知道上面提到的表中PartNo存在于哪个表中。不是来自alli我只想知道表名
select TabName from AllProducts where PartNo = 123