创建一个新列并将默认值设置为等于SQL中某个条件的COUNT?

时间:2014-04-18 03:13:09

标签: sql oracle

我有2张桌子。 (table1,table2) 现在,我想做一些事情:

ALTER TABLE table1 
ADD counter INT DEFAULT (Select COUNT(table2.car_type)
                         FROM table2
                         WHERE (table1.car_type = table2.car_type));

这是我能提出的最接近的语法,但仅仅通过观察它我知道它是错的。请告诉我如何在一个SQL语句中执行此操作(如果可能)。

目标表(使用计数器实现)是这样的:(用 - 分隔列)

表1: pid-car_type-counter

1-Honda-2
2-Toyota-3
3-Suzuki-1
4-Ferrari-0
5-Porsche-1

表2: pid-car_type

1-Honda
2-Toyota
3-Porsche
4-Honda
5-Suzuki
6-Toyota
7-Toyota

1 个答案:

答案 0 :(得分:0)

我认为你不能这样做,至少11g。 FTFM:

  

对默认列值的限制:DEFAULT表达式不能   包含对PL / SQL函数或其他列的引用   伪列CURRVAL,NEXTVAL,LEVEL,PRIOR和ROWNUM,或日期   未完全指定的常量。

我非常肯定你也不能在DEFAULT子句中使用SELECT语句。虚拟列可能有一种方法。另一种方法是创建一个视图。