根据计算字段的值向MYSQL SELECT语句添加值

时间:2018-11-09 07:45:44

标签: mysql

我有以下查询

SELECT `username`, TIMESTAMPDIFF(DAY, STR_TO_DATE(enrolmentDate, '%d-%m-%Y'), now()) AS day 
FROM `users`

这将导致2列,在“天”列中有一个数值。

是否有一种方法可以添加第三列,该列的值可以是1或0,具体取决于“天”列中的数字?如果'day'中的值大于700,我希望在新列中为1,否则为0。

理想的结果:

用户名|天|核心

用户名1 | 100 | 0

用户名2 | 800 | 1

检索数据后,我可以在PHP中执行此检查,但是我认为MYSQL可能是更有效的方法?

感谢任何提示

2 个答案:

答案 0 :(得分:1)

您可以尝试使用子查询,如下所示,

SELECT z.*, IF(z.day > 700, 1, 0) AS core
FROM
  (
    SELECT `username`,
    TIMESTAMPDIFF(DAY, STR_TO_DATE(enrolmentDate, '%d-%m-%Y'), now()) AS day 
    FROM `users`
  ) z

答案 1 :(得分:0)

我认为您无法在同一SELECT语句中引用计算列的结果。请尝试以下方法:let day:= TIMESTAMPDIFF(DAY, STR_TO_DATE(enrolmentDate, '%d-%m-%Y'), now())。那么您的第三列是1/2 * SIGN(day-700)+ 1/2(如果day <700,则映射为0;如果da​​y> 700,则映射为1;如果da​​y == 700,则映射为1/2。