簡體   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