【发布时间】:2021-09-21 08:14:55
【问题描述】:
虽然看起来和这里的其他问题很相似,但这个案例有点不同,我在这里找不到答案。
我有一个固定的表格列表(例如table_1, table_2, table_3, etc...),其中可能包含大约 50 个表格。
这些表可能有不同的方案,但它们都具有整数类型的列id。
有一个整数的输入列表,任务是获取一个输出表,表名作为列,输入整数作为行,单元格中带有布尔值:TRUE如果对应的id存在对应的记录表和FALSE 否则。
如果可能,我想在单个查询中检索结果。
或者,如果记录存在于所有表中,则有一个列 exists_in_all 将具有 TRUE ,否则具有 FALSE ,这将是完美的。
例如:
输入:
111, 222, 333, 444, 123, 456
表格:
table_1:
| id | some_column |
|---|---|
| 111 | 'lorem ipsum' |
| 222 | 'and' |
| 333 | 'some' |
| 444 | 'random' |
| 123 | 'strings' |
table_2:
| id | some_column |
|---|---|
| 111 | 'lorem ipsum' |
| 222 | 'and' |
| 444 | 'random' |
| 123 | 'strings' |
table_3:
| id | some_column |
|---|---|
| 111 | 'lorem ipsum' |
| 222 | 'and' |
| 333 | 'some' |
| 444 | 'random' |
想要的结果:
| id | exists_in_all | table_1 | table_2 | table_3 |
|---|---|---|---|---|
| 111 | TRUE | TRUE | TRUE | TRUE |
| 222 | TRUE | TRUE | TRUE | TRUE |
| 333 | FALSE | TRUE | FALSE | TRUE |
| 444 | TRUE | TRUE | TRUE | TRUE |
| 123 | FALSE | TRUE | TRUE | FALSE |
| 456 | FALSE | FALSE | FALSE | FALSE |
我对@987654338@、JOINs、UNIONs 进行了几次尝试,但都无法得到我想要的结果。也许,我没有正确使用它们。
单个记录的查询也可以工作。
例如:
输入
123
结果
| id | 123 |
|---|---|
| exists_in_all | FALSE |
| table_1 | TRUE |
| table_2 | TRUE |
| table_3 | FALSE |
提前致谢!
【问题讨论】:
-
这需要动态 SQL 解决方案。最佳解决方案取决于您的特定数据库平台。
-
这听起来很奇怪。知道在我的 customers 表中有一个 ID 123,但在我的 stores 表中没有,我会获得什么信息。这是关于数据库复制吗?否则,这可能只是一个同样奇怪的数据库的指标。不管怎样:你的 DBMS 是什么?
-
您好,请添加您尝试过的minimal reproducible example
标签: sql