php - MySQL条件选择替换查询

标签 php mysql

我发现自己需要替换 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;

Updated Fiddle here

关于php - MySQL条件选择替换查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18614935/

相关文章:

php - PHP中的字符串是字符数组吗?

php - 使用 BBCodes...解析 HTML 还是完全删除它? (XSS/PHP)

MySQL 如何将第二组参数结果转换为列?

php - 按频率对 SQL 查询记录排序

php - 我的 SELECT 语句不能正确处理表单提交的变量

php - PHP 中人类可读的、当前时间敏感的日期和时间格式

php - 通过使用 strtotime 检查日期来更新 mysql 表行

javascript - 使用对象数组填充 Highcharts 线

mysql - 如何通过VB.NET在MySQL数据库中插入yyyy-yyyy日期格式

mysql - 如何在 laravel 5.0 中使用 outer full join?