我有5个表格如下LEDProducts,ElectricalProduts,AudioProducts,VideoProducts和Structure Products。每个表中的列如下MaterialName,PartNo,UOM。我想找到一个特定的PartNo存在于哪个表中。哪种方法最快?
答案 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个查询更快,这些通常都会慢得多。