2016-04-23 134 views
-2

我想根据现有列的数量创建新列。我在下面的代码中遇到错误,我知道这是因为< =,> = =类型操作数只能返回一条记录。我相信我应该使用IN或ANY,所有可能的操作数,但似乎无法正确实施它。SQL基于另一列的小于操作数创建新列

ALTER TABLE SALES_TOTAL ADD REFUNDS INTEGER(20); 

UPDATE SALES_TOTAL SET REFUND = SELECT [SALE_TOTAL] from [SALES_TOTAL] WHERE[SALES_TOTAL] < 10 

任何人都可以提供一个如何做的例子吗?

在此先感谢。

+0

什么错误? “单行子查询返回多行”? –

+0

是的 - “子查询返回的值超过1,当子查询跟随=,!=,<, <= , >,> =或子查询被用作表达式时,这是不允许的 ” – eggman

+0

@RuslanOsmanov回答了您的问题。 –

回答

1

这就是你可能想:

alter table SALES_TOTAL add REFUNDS int unsigned not null default 0; 
update SALES_TOTAL set REFUNDS = SALE_TOTAL where SALE_TOTAL < 10; 
+0

假设有15行sale_total小于10.哪个值将被选中? –

+0

@I_am_Batman,sql非常聪明,可以选择相应的行。只是测试它。 https://gist.github.com/809cc8e6c2dffa9378d9566661facdf1 –

+0

点失败。 –