我发现自己需要替换 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 查询返回的数据中的戳记列,我没有将数据存储在任何地方,也没有替换表中的数据。该表将保持不变。
谢谢
最佳答案
绝对可能:
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;
关于php - MySQL条件选择替换查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18614935/