繁体   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