我有以下查询
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可能是更有效的方法?
感谢任何提示
答案 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;如果day> 700,则映射为1;如果day == 700,则映射为1/2。