2017-09-15 83 views
0

Tryng及未能發現用於SQL SELECT內的IF或IIF正確的語法(MySQL的)比較變量然後設置一個變量(如果SQL)

比較2個變量,並且如果不同,則另一個變量設置爲一個值

IF(assetID <> previousAssetID) set @ts = vardtmin 

如果語句解析爲真,我是否需要另一個說明符將sts置爲1?

全SELECT是 -

SELECT 
assetID, 
IF(assetdID <> previousAssetID) set @ts=vardtmin, 
nodeid, 
@changed := IF(nodeid <> previousLocationID, @changed + 1, @changed) AS changed, 
IFNULL(TIMESTAMPDIFF(SECOND, previousTs, ts), 0) AS secDiff 

問候 活動

+1

在上下文此代碼段存儲過程,查詢,觸發器或其他東西? –

+0

向我們展示一個完整的SELECT查詢! – jarlh

+0

看看這個博客:https://stackoverflow.com/questions/5951157/if-in-select-statement-choose-output-value-based-on-column-values – superdev

回答

0

我不知道MySQL,但SQL語法會像下面: -

SELECT 
assetID, 
@ts = case when assetdID <> previousAssetID then vardtmin else 111 end , 
nodeid, 
@changed = case when nodeid <> previousLocationID @changed + 1 else @changed AS changed, 
case when (TIMESTAMPDIFF(SECOND, previousTs, ts), 0) isnull then .. else .. end AS secDiff 
+0

謝謝chanchal,請解釋111是什麼(如果assetID和previousAssetID是相同的,那麼@ts不能改變) – Active

+0

這是什麼意思是一些其他值如果你想更新,但語法應該是這樣的。 – chanchal