【发布时间】:2013-06-14 18:34:19
【问题描述】:
我想显示在整个数据库中至少使用了 10 次的数据类型的名称,以及它们使用的不同表的数量,按后者排序。在修修补补时,我到了这一点:
select data_type, count(distinct table_name) "count"
from all_tab_cols
group by data_type
having count(*) >= 10
order by "count" desc;
有输出
VARCHAR2 1920
NUMBER 1435
...
这是错误的,因为视图等都包括在内,而我在数据库中只有 125 个表。 但是,如果我尝试
select data_type, (select count(distinct t.table_name)
from all_tables t
where t.table_name in table_name) "count"
from all_tab_cols
group by data_type
having count(*) >= 10
order by "count" desc;
我明白了
LONG 125
SDO_GEOMETRY 125
... and so on
这也是错误的。显然这是因为子查询,更具体地说是where 子句。我以为table_name 只包含当前组的表名?我的想法有什么问题吗?你会如何解决这个问题?
FWIW,这是作业,所以一些粗略的指示就足够了。 我们正在使用互联网电影数据库的克隆。
【问题讨论】:
标签: mysql sql group-by subquery