首页 > 解决方案 > 将较低的数字从行导出到 csv

问题描述

我想在我的 csv 文件中将最低数字 (min(Number1,Number2,Number3) 插入到最低列。我的表:

ID_Unique | Number1 | Number2 | Number3 | 
AB67      |  10   |    20     |   5     |
BC45      |  2   |    10      |  15     |
AS76      |  1  |    40       |   50     |

这是我将表格导出到 csv 的部分代码。

    $stmt = $conn->prepare("SELECT tabel1.ID_Unique AS ID,
 tabel1.Number1 AS 'Number1', tabel1.Number2 AS 'Number2',tabel1.Number3 AS 'Number3', tabel1.Lowest AS 'Lowest'
    FROM tabel1
    ");


    $stmt->execute();

    $filelocation = 'exports/';
    $filename     = 'export-'.date('Y-m-d H.i.s').'.csv';
    $file_export  =  $filelocation . $filename;

    $data = fopen($file_export, 'w');

    $csv_fields = array();

    $csv_fields[] = 'ID';
    $csv_fields[] = 'Number1';
    $csv_fields[] = 'Number2';
    $csv_fields[] = 'Number3';
    $csv_fields[] = 'Lowest';

标签: phpmysqlpdo

解决方案


使用LEAST

SELECT
    ID_Unique AS ID,
    Number1,
    Number2,
    Number3,
    LEAST(Number1, Number2, Number3) AS Lowest
FROM tabel1;

在没有LEAST函数的数据库中,我们可以使用CASE表达式实现相同的逻辑:

CASE WHEN Number1 < Number2 AND Number1 < Number3 THEN Number1
     WHEN Number2 < Number3 THEN Number2
     ELSE Number3 END AS Lowest

推荐阅读