2015-10-01 45 views
0

我有sql查詢,其中如果2次之差大於1440,那麼它將除以7,否則它將返回實際值。問題是我正在重複返回值中的代碼。用變量替換函數並在返回值中使用

SELECT 
'IF(TIMESTAMPDIFF(MINUTE, now(), end_at) > 1440, TIMESTAMPDIFF(MINUTE, now(), end_at)/ 7, TIMESTAMPDIFF(MINUTE, now(), end_at)) as minutesLeft' 
FROM table 

如何將重複代碼替換爲這樣的代碼?

SELECT 
'IF(TIMESTAMPDIFF(MINUTE, now(), end_at) > 1440, timestamp/7, timestamp) as minutesLeft' 
FROM table 
+0

是的,但我想如果我執行相同的代碼3次,MySQL會每次計算。但如果我第一次存儲的值,第二次和第三次不會計算 – Alex

回答

1

您可以嘗試使用的語句分配:

set @diff = null; 
SELECT @diff := TIMESTAMPDIFF(MINUTE, now(), end_at), 
IF(@diff > 1440, @diff/7, @diff) as minutesLeft 
FROM table 

裹選擇在一個子查詢,如果你只是想一列返回。

+0

所有返回的行都是NULL – Alex

+0

對不起,應該是:= for在語句分配中。在我的回覆中更正了代碼 - 如果由於某種原因,它仍然不起作用,請嘗試將@diff設置爲0.0而不是NULL。 – Giles

+0

它的工作原理是這樣的......謝謝:) – Alex

相關問題