繁体   English   中英

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

[英]adding a value to a MYSQL SELECT statement, depending on the value of calculated field

我有以下查询

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 可能是更有效的方法,如果它可以做到的话?

感谢您的任何提示

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

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

我认为您不能在同一个 SELECT 语句中引用计算列的结果。 试试这个: let day := TIMESTAMPDIFF(DAY, STR_TO_DATE(enrolmentDate, '%d-%m-%Y'), now()) 那么你的第三列是 1 / 2 * SIGN(day - 700) + 1 / 2 (如果天 < 700,则映射为 0,如果天 > 700,则映射为 1,如果天 == 700,则映射为 1 / 2。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM