Sql 查询记录时不知道它位于哪个表中
我有大约100多个表,它们都有一个列ID(主键) 我的任务是,当用户输入ID号时,我需要找到记录所属的表,然后从该表中检索所有数据 我想到了以下选项,但它们不起作用,因为:Sql 查询记录时不知道它位于哪个表中,sql,sql-server,Sql,Sql Server,我有大约100多个表,它们都有一个列ID(主键) 我的任务是,当用户输入ID号时,我需要找到记录所属的表,然后从该表中检索所有数据 我想到了以下选项,但它们不起作用,因为: 联合:表太多,每个表有不同的列 视图:每个表中的数据更新非常频繁 其他的选择是什么 p/s:由于需要,我不得不避免使用T-SQL。这听起来像是糟糕的数据库设计,但您可以这样做: 构建一个新表,该表存储项目所在的ID号和表 使用偶尔运行的存储过程填充此表(取决于获得新记录的频率)。也可以在添加记录时运行此存储过程 现在,您可以
p/s:由于需要,我不得不避免使用T-SQL。这听起来像是糟糕的数据库设计,但您可以这样做: 构建一个新表,该表存储项目所在的ID号和表 使用偶尔运行的存储过程填充此表(取决于获得新记录的频率)。也可以在添加记录时运行此存储过程
现在,您可以查询一个表以确定需要查询的位置,并使用第二个查询来获取正确的数据。不理想,但我认为比其他选项更快。这听起来像是糟糕的数据库设计,但您可以这样做: 构建一个新表,该表存储项目所在的ID号和表 使用偶尔运行的存储过程填充此表(取决于获得新记录的频率)。也可以在添加记录时运行此存储过程
现在,您可以查询一个表以确定需要查询的位置,并使用第二个查询来获取正确的数据。不理想,但我认为比其他选项更快。这听起来像是糟糕的数据库设计,但您可以这样做: 构建一个新表,该表存储项目所在的ID号和表 使用偶尔运行的存储过程填充此表(取决于获得新记录的频率)。也可以在添加记录时运行此存储过程
现在,您可以查询一个表以确定需要查询的位置,并使用第二个查询来获取正确的数据。不理想,但我认为比其他选项更快。这听起来像是糟糕的数据库设计,但您可以这样做: 构建一个新表,该表存储项目所在的ID号和表 使用偶尔运行的存储过程填充此表(取决于获得新记录的频率)。也可以在添加记录时运行此存储过程
现在,您可以查询一个表以确定需要查询的位置,并使用第二个查询来获取正确的数据。不太理想,但我认为比其他选项更快。我知道你明确地说你不能使用t-SQL。但是,出于参考目的,对于那些没有相同限制的人:
EXEC sp_MSforeachtable @command1="SELECT * FROM ? WHERE ID = [x]"
这将对数据库中的所有表执行查询,其中?是tablename的占位符。
但是,请注意,这是一个未记录的SP,在未来的版本中可能会被释放。我知道您明确表示不能使用t-SQL。但是,出于参考目的,对于那些没有相同限制的人:
EXEC sp_MSforeachtable @command1="SELECT * FROM ? WHERE ID = [x]"
这将对数据库中的所有表执行查询,其中?是tablename的占位符。
但是,请注意,这是一个未记录的SP,在未来的版本中可能会被释放。我知道您明确表示不能使用t-SQL。但是,出于参考目的,对于那些没有相同限制的人:
EXEC sp_MSforeachtable @command1="SELECT * FROM ? WHERE ID = [x]"
这将对数据库中的所有表执行查询,其中?是tablename的占位符。
但是,请注意,这是一个未记录的SP,在未来的版本中可能会被释放。我知道您明确表示不能使用t-SQL。但是,出于参考目的,对于那些没有相同限制的人:
EXEC sp_MSforeachtable @command1="SELECT * FROM ? WHERE ID = [x]"
这将对数据库中的所有表执行查询,其中?是tablename的占位符。
但是,请注意,这是一个未记录的SP,在将来的版本中可能会被释放。试试这个。@MagicNumber是您要查找的ID值。此SQL还考虑了没有ID列的表 您的意思是不需要SQL答案吗?因为你的尝试似乎暗示了相反的结果(联盟,观点)。即使您不想要T-SQL答案,并且希望使用类似SSIS的东西,您仍然需要编写T-SQL来解决它。这就是我使用T-SQL发布您的解决方案的原因 如果这不能解决你的问题,请在你说的时候扩大你想要的, “p/s:由于要求,我必须避免使用T-SQL。”(原文如此)
试试这个。@MagicNumber是您要查找的ID值。此SQL还考虑了没有ID列的表 您的意思是不需要SQL答案吗?因为你的尝试似乎暗示了相反的结果(联盟,观点)。即使您不想要T-SQL答案,并且希望使用类似SSIS的东西,您仍然需要编写T-SQL来解决它。这就是我使用T-SQL发布您的解决方案的原因 如果这不能解决你的问题,请在你说的时候扩大你想要的, “p/s:由于要求,我必须避免使用T-SQL。”(原文如此)
试试这个。@MagicNumber是您要查找的ID值。此SQL还考虑了没有ID列的表 您的意思是不需要SQL答案吗?因为你的尝试似乎暗示了相反的结果(联盟,观点)。即使您不想要T-SQL答案,并且希望使用类似SSIS的东西,您仍然需要编写T-SQL来解决它。这就是我使用T-SQL发布您的解决方案的原因 如果这不能解决你的问题,请在你说的时候扩大你想要的, “p/s:由于要求,我必须避免使用T-SQL。”(原文如此)
试试这个。@MagicNumber是您要查找的ID值。此SQL还考虑了没有ID列的表 你是说你吗