2017-02-04 79 views
0

当SQL做一个INSERT更新一个值,是有可能做这样的事情取决于其他值在SQL

INSERT INTO myTable VALUES 
('Superman', 100, 
'[this value will be either 'Good' or 'bad' depending if the previous row is less than or greater than 100]') 
+3

什么是“*上一个*”? –

+0

您插入的最后一个值将会是好还是坏,具体取决于它之前的值。所以假设如果在它满足特定条件之前,最后的值将是“好”或“坏”。好吧,@ PM77-1 –

+2

。什么是“*之前*”? –

回答

1

我认为你要做到这一点,因为它是一个参数化查询和你出于某种原因,不想计算查询外部的“好”或“坏”值?您可以现场“{这个值......”成case语句

情况下,当$ 1> 100 那么“好” 其他“坏” 结束

其中$ 1是你的参数。

如果所有行始终遵循相同的逻辑,则计算列也可能是您所需要的。那么你不需要存储'好'或'坏'。一个视图返回这个'好'或'坏'也可以做你想要的东西,而不用在插入物上处理它。

1

您可以通过使用例如case声明(如下所示)来获得有条件的联机值。这里是一个MySQL实例:

,如果你的表的定义如下

CREATE TABLE testtable (
column1 varchar(20) DEFAULT NULL, 
column2 int(11) DEFAULT NULL 
); 

那么下面的插入会插入一个一行值'Superman'0

insert into testtable (column1,column2) values ('Superman', case when 1>0 then 0 else 100 end);

你应该使用一些以变​​量驱动case例如:

insert into testtable (column1,column2) values ('Superman', case when @xcoord > @ycoord then 0 else 100 end);

查找更多关于case的信息以查找更多定制。