2017-02-04 112 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的信息以查找更多定製。