1

我发现自己需要替换 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 查询返回的数据中的戳列,我没有将数据存储在任何地方,也没有替换表中的数据。该表将保持不变。

谢谢

4

3 回答 3

2

绝对可能:

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

在这里拉小提琴。请注意,对于1. 如果删除- 1,您最终将存储昨天的日期以获取 的stamp1

更新回答你关于这样做的问题SELECT

SELECT CURRENT_DATE - INTERVAL stamp - 1 DAY
FROM stamps;

在这里更新了小提琴

于 2013-09-04T13:25:32.887 回答
0

可以使用mysql的case语句

CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END CASE

于 2013-09-04T13:24:26.373 回答
0

如果您只是尝试检索结果,请使用以下命令:

SELECT CURDATE() - INTERVAL stamp -1 DAY FROM myTable
于 2013-09-04T13:25:45.533 回答