我发现自己需要从MySQL Select Query中替换某些返回的结果。我有下表和数据(简化为例)
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查询返回的数据中的戳记列,我不是将数据存储在任何地方,也不是替换表中的数据。该表将保持不变。
由于
答案 0 :(得分:2)
绝对可能:
UPDATE stamps
SET stamp = CURRENT_DATE - INTERVAL stamp - 1 DAY;
<强> Fiddle here 即可。请注意,对于1
的戳记,您必须将戳记值减1到“减去0天”。如果您移除- 1
,则最终会存储昨天的stamp
1
值的日期。
更新以回答您在SELECT
上执行此操作的问题:
SELECT CURRENT_DATE - INTERVAL stamp - 1 DAY
FROM stamps;
<强> Updated Fiddle here 强>
答案 1 :(得分:0)
您可以使用mysql的case语句
CASE case_value 何时when_value THEN statement_list [WHEN when_value THEN statement_list] ...... [ELSE statement_list] 结束案例
答案 2 :(得分:0)
如果您只是想检索结果,请使用以下命令:
SELECT CURDATE() - INTERVAL stamp -1 DAY FROM myTable