簡體   English   中英

MySQL條件選擇替換查詢

[英]MySQL Conditional Select Replace Query

我發現自己需要替換MySQL Select查詢返回的某些結果。 我有下表和數據(出於示例目的而簡化)

uid  |  duration |  range |     unique |    stamp
-----------------------------------------------------------------
23   |  d    |  43    |     1      |    1
24   |  d    |  65    |     0      |    2
25   |  d    |  76    |     0      |    3
26   |  d    |  33    |     0      |    4
27   |  d    |  44    |     1      |    5
28   |  d    |  43    |     1      |    6
29   |  d    |  67    |     0      |    7
30   |  d    |  88    |     0      |    8
31   |  d    |  63    |     0      |    9

我想在stamp欄上進行替換。 我想知道是否有可能在列上運行某種用戶定義的函數並動態替換它,而不是簡單的文本替換。

例如,如果在戳記列中返回的數據為1,我希望將其替換為今天的時間戳,如果它是2,則為昨天的時間戳,為3,則是昨天的前一天,依此類推。

所以我的問題是,是否可以將REPLACE指向處理該值然后返回要替換為該值的函數。 否則,是否有另一種方法可以完成此任務。

我顯然可以用PHP對返回的數據進行后期處理並進行更改,但是返回數百萬條記錄將大大增加加載時間。

編輯,使事情更清晰:我想替換SELECT查詢返回的數據中的標記列,我不在任何地方存儲數據,也不替換表中的數據。 該表將保持不變。

謝謝

絕對可能:

UPDATE stamps
SET stamp = CURRENT_DATE - INTERVAL stamp - 1 DAY;

在這里擺弄 請注意,您必須通過1郵票價值遞減至“減0天”為郵票1 如果刪除- 1 ,最終將存儲昨天的日期, stamp值為1

更新以回答有關在SELECT上執行此操作的問題:

SELECT CURRENT_DATE - INTERVAL stamp - 1 DAY
FROM stamps;

在這里更新了小提琴

您可以使用mysql的case語句

CASE case_value WHEN when_value THEN statement_list [When when_value THEN statement_list] ... [ELSE statement_list]結束案例

如果您只是嘗試檢索結果,請使用以下命令:

SELECT CURDATE() - INTERVAL stamp -1 DAY FROM myTable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM