如何在哪个表中查找特定数据

时间:2014-02-06 06:49:54

标签: sql-server-2008

我有5个表格如下LEDProducts,ElectricalProduts,AudioProducts,VideoProducts和Structure Products。每个表中的列如下MaterialName,PartNo,UOM。我想找到一个特定的PartNo存在于哪个表中。哪种方法最快?

4 个答案:

答案 0 :(得分:0)

试试这个......

在Query中,在where子句中提供所需的列名。它将显示列名和表名。

SELECT table_name, column_name FROM information_schema.columns WHERE column_name = 'PartNo'

答案 1 :(得分:0)

试试这段代码......

SELECT table_name, column_name FROM information_schema.columns WHERE column_name = 'PartNo' and table_name IN ('LEDProducts','ElectricalProduts', 'AudioProducts', 'VideoProducts', 'Structure Products'

它将选择给定的列名,表名为“LEDProducts”,“ElectricalProduts”,“AudioProducts”,“VideoProducts”和“Structure Products”

答案 2 :(得分:0)

您可以使用联合:

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

如果您经常运行此类查询,则可能需要为AllProducts

创建一个视图
create view AllProducts as
  select 'LEDProducts' as TabName, MaterialName, PartNo,UOM from LEDProducts
    union
  select 'ElectricalProduts', MaterialName, PartNo,UOM from ElectricalProduts 
    union 
  select 'AudioProducts', MaterialName, PartNo,UOM from AudioProducts
    union
  select 'VideoProducts',  MaterialName, PartNo,UOM from VideoProducts
    union
  select 'StructureProducts',  MaterialName, PartNo,UOM from StructureProducts

然后您可以使用以下查询:

select TabName from AllProducts where PartNo = 123

答案 3 :(得分:0)

根据您的使用情况,您应该考虑创建一个包含列(partno,table_id,tablename)的partno_lookup表。然后复制所有零件编号和将id记录到此表中。根据您的需要,可以在每次插入/更新/删除时完成复制,也可以是定期批量传输。

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