我有一个表格列表,例如:
mytableA
mytableB
mytableC
Run Code Online (Sandbox Code Playgroud)
这些表都有相同的列(时间戳)。
我可以单独计算每张桌子:
select count(*) from mytableA where timestamp = to_char(sysdate-1, 'yyyymmdd') || '0000';
select count(*) from mytableB where timestamp = to_char(sysdate-1, 'yyyymmdd') || '0000';
select count(*) from mytableC where timestamp = to_char(sysdate-1, 'yyyymmdd') || '0000';
Run Code Online (Sandbox Code Playgroud)
如何将其合并到一个查询中?有没有简单的方法?
预期成绩:
MyTableName MyCnt
----------- -----
mytableA 121
mytableB 78
mytableC 2345
Run Code Online (Sandbox Code Playgroud)
SELECT (
SELECT COUNT(*)
FROM table1
) AS tot1,
(
SELECT COUNT(*)
FROM table2
) AS tottab2,
(
SELECT COUNT(*)
FROM table3
) AS tottab3
Run Code Online (Sandbox Code Playgroud)
您不能直接使用类似的查询来完成此操作where table in (myTableA, myTableB, etc)
,但您可以美化union all解决方案:
select MyTableName, count(*)
FROM(
select 'myTableA' MyTableName, timestamp from mytableA
union all
select 'myTableB', timestamp from mytableB
union all
select 'myTableA', timestamp from mytableC
)
WHERE timestamp = to_char(sysdate-1, 'yyyymmdd') || '0000'
GROUP BY MyTableName;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36315 次 |
| 最近记录: |