我正在处理一个多租户应用程序。大多数表都包含一个tenant_id列。我需要特定tenant_id在所有表中的行数。
示例,表格:-
create table Employee(id integer, name varchar(100), tenantid integer);
insert into Employee(id, name, tenantid) values(1, "Stephan", 64);
insert into Employee(id, name, tenantid) values(2, "Alan", 64);
insert into Employee(id, name, tenantid) values(3, "Charles", 46);
create table Student(id integer, name varchar(100), standard integer, tenantid integer);
insert into Student(id, name, standard, tenantid) values(1, "James", 2, 64);
insert into Student(id, name, standard, tenantid) values(2, "Rony", 4, 64);
insert into Student(id, name, standard, tenantid) values(3, "Steve",6, 64);
create table Teacher(id integer, name varchar(100), subject varchar(100), tenantid integer);
insert into Teacher(id, name, subject, tenantid) values(1, "Alvin", "Science", 46);
insert into Teacher(id, name, subject, tenantid) values(2, "Neil", "Geography", 64);
insert into Teacher(id, name, subject, tenantid) values(3, "Amy", "Mathematics", 46);`
获取tenantid = 64的每个表中的行数的示例结果
| 表格名称|计数|
| - ------|- ------|
| 雇员|第二章|
| 学生|三个|
| 教师|1个|
如何遍历所有表并查询where tenantid = <tenantid>
2条答案
按热度按时间brc7rcf01#
使用动态查询。为每个表动态形成查询,使用
string_agg()
将其连接起来,然后使用sp_executesql
执行查询db<>fiddle demo
polkgigr2#
使用UNION ALL:
查看示例(我不确定效率):