我有一个SQL Server表,我正在构建超过100列。我正在运行UPDATE TABLE_NAME
个查询来填充该表。但是,如果没有可用记录,则会在记录中插入NULL
。这使我必须执行的计算变得困难。
我尝试在NOT NULL
语句中使用DEFAULT (0)
和CREATE TABLE
创建表,但是当我运行更新时,它会尝试插入NULL值并收到此错误:< / p>
更新声明:
UPDATE TABLE_NAME
SET NumOrders = (SELECT count(OrderID) FROM ORDERS WHERE TABLE_NAME.CUSTOMER_ID = ORDERS.CUSTOMER_ID);
Cannot insert the value NULL into column 'NumOrders', table 'TABLE_NAME'; column does not allow nulls. UPDATE fails.
我可以运行第二次更新查询来删除NULLS,例如:
UPDATE TABLE_NAME
SET NumOrders = 0
WHERE NumOrders IS NULL;
这似乎是我对我必须编写的更新查询加倍。
必须有更好的方法来做到这一点,对吧....?
由于
答案 0 :(得分:3)
UPDATE TABLE_NAME
SET NumOrders = isnull((SELECT count(OrderID) FROM ORDERS WHERE TABLE_NAME.CUSTOMER_ID = ORDERS.CUSTOMER_ID),0);
这对你有用吗?
答案 1 :(得分:1)
默认约束仅触发插入而不更新,另一个选项是使用更新触发器将NULLS更改为非空的
或指定update语句中的值,并确保它不是null,而是实际值
答案 2 :(得分:0)
UPDATE TABLE_NAME SET NumOrders = COALESCE((SELECT count(OrderID)FROM ORDERS WHERE TABLE_NAME.CUSTOMER_ID = ORDERS.CUSTOMER_ID),0);