从具有嵌套查询的表/多个表列表中选择-MS SQL
不确定这是否有一个简单的答案,但我基本上正在尝试这样做:从具有嵌套查询的表/多个表列表中选择-MS SQL,sql,sql-server,join,select,nested,Sql,Sql Server,Join,Select,Nested,不确定这是否有一个简单的答案,但我基本上正在尝试这样做: select id from (select table_name from information_schema.columns where column_name = 'id') where id = 1234 因此,将一个表列表传入FROM 我正在尝试检查此列存在的所有表是否具有1234的匹配值 在不输入31次的情况下,从表1中选择,从表2中选择,以此类推 不做一系列的连接 可能吗?我编写了这个存储过程 我知道这很糟糕,我以前从
select id
from (select table_name from information_schema.columns where column_name = 'id')
where id = 1234
因此,将一个表列表传入FROM
我正在尝试检查此列存在的所有表是否具有1234的匹配值
在不输入31次的情况下,从表1中选择,从表2中选择,以此类推
不做一系列的连接
可能吗?我编写了这个存储过程 我知道这很糟糕,我以前从未用tsql(teesquill?)写过任何东西,我的目标就是得到一些有用的东西 //在DB中查找所有出现的值
USE [your db here]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[usp_query] (
@value NVARCHAR(128),
@colName NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @sql NVARCHAR(MAX);
-- DECLARE @tables NVARCHAR(MAX);
DECLARE @tabName NVARCHAR(MAX);
-- DECLARE @colName NVARCHAR(MAX);
DECLARE @count INT;
-- construct SQL
--SET @tables = N'SELECT Table_name FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE "yourcollumn"'
DECLARE tabs CURSOR FOR SELECT table_name FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'yourcollumn'
OPEN tabs
FETCH NEXT FROM tabs INTO @tabName
WHILE @@fetch_status = 0
BEGIN
--SET @count = N'SELECT count ( ' + @colName + ' ) FROM ' + @tabName + ' where ' + @colName + ' = ' + @value
DECLARE @SQLString NVARCHAR(500);
DECLARE @ParmDefinition NVARCHAR(500);
DECLARE @varOut NVARCHAR(25);
SET @SQLString = N'SELECT @count = count ( ' + @colName + ' ) FROM ' + @tabName + ' where ' + @colName + ' = ' + @value;
SET @ParmDefinition = N'@count NVARCHAR(25) OUTPUT';
EXECUTE sp_executesql @SQLString
,@ParmDefinition
,@count = @varOut OUTPUT;
SET @sql = N'SELECT ' + @colName + ' FROM ' + @tabName + ' where yourcollumn = ' + @value;
IF @varOut > 0
SELECT @tabName AS 'value found in table'
--EXEC sp_executesql @sql
FETCH NEXT FROM tabs INTO @tabName
END
CLOSE tabs
结束 可以使用存储过程,但我相信不能使用纯SQL!i、 e.您需要的是“动态SQL”而不是“静态SQL”。请标记正在使用的数据库您使用的是哪种DBMS产品?“SQL”只是所有关系数据库使用的一种查询语言,而不是特定数据库产品的名称——由于您需要动态SQL,这是高度特定于供应商的。请为您正在使用的数据库产品添加。太好了,谢谢大家,我知道该怎么办了!