sql - 如何计算列出了哪些表 Employee
问题描述
我想找出哪些表中有员工 x 的条目。我想这样做的原因是对员工 y 有用,我认为我在其中一个表中遗漏了一个条目,但不知道是哪个。sql server 中是否有一种通用方法来检查员工表中的员工并检查其他哪些表为他们保存值?然后对第二个员工做同样的事情然后比较?
所以我在 Employee Tables 中有 Emplyee id 1 以及如何找出数据库中的其他表为他保存的值。
解决方案
考虑到所有表中的列名都相同,您可以尝试以下操作:
DECLARE @tab_name VARCHAR(100)
DECLARE @command NVARCHAR(300)
DECLARE @rowcount INT
DECLARE @tab_result TABLE(tab_name VARCHAR(100), command NVARCHAR(300), rec_count INT)
DECLARE @column_name VARCHAR(100) = 'employee_id'
DECLARE @value VARCHAR(50) = '1'
DECLARE c_tables CURSOR FAST_FORWARD FOR
SELECT Tab.name AS tab_name, 'SELECT @rowcount = COUNT(1) FROM ' + Tab.name + ' WHERE ' + Col.name + ' = ' + @value AS command
FROM sys.all_columns AS Col
INNER JOIN sys.sysobjects AS Tab on Tab.id = Col.object_id
WHERE Tab.type = 'U'
AND Col.name = @column_name
ORDER BY Tab.name
OPEN c_tables
WHILE 1 = 1
BEGIN
FETCH NEXT FROM c_tables INTO @tab_name, @command
IF @@FETCH_STATUS <> 0
BREAK
EXEC sp_executesql @command, N'@rowcount INT OUTPUT', @rowcount OUTPUT
IF @rowcount > 0
INSERT INTO @tab_result VALUES (@tab_name, @command, @rowcount)
END
CLOSE c_tables
DEALLOCATE c_tables
SELECT *
FROM @tab_result
ORDER BY [@tab_result].rec_count DESC
只需根据您的需要设置变量@column_name和@value的值。
推荐阅读
- ios - 以编程方式退出 AVPlayerViewController 全屏?
- php - Eclipse PDT - 如何在整个项目中强制进行全面的文件验证
- python - 为什么图像上传失败,错误为 selenium.common.exceptions.WebDriverException:消息:未知错误:无法聚焦元素
- django - 使用 re_path 处理 URL 参数中的空格
- lucene - 如何返回在索引中获得命中的查询词
- javascript - 使用 React 在 Bootstrap (V 3.3.7) 模式中渲染图表
- javascript - 在 textarea 或 contenteditable div 中键入 TAB 时检测最后一个书面单词
- javascript - 更改 Anychart 雷达图中的线条颜色
- python - 加快同一个大文件中的多个字符串搜索?
- intellij-idea - 如果未启用“列出所有 Gerrit 更改”,则 Gerrit 更改不会出现在 IntelliJ IDEA 中