Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在3个不同的列中按最小值排序?_Mysql_Select_Multiple Columns - Fatal编程技术网

Mysql 如何在3个不同的列中按最小值排序?

Mysql 如何在3个不同的列中按最小值排序?,mysql,select,multiple-columns,Mysql,Select,Multiple Columns,我的桌子a: A|B|C // Columns 3|4|0 // Values 我想先做一个小批量的选择。。 大概是这样的: "SELECT * FROM table_a ORDER BY (smallest of A,B,C first, second and third (Bigger one)) ASC" returns: C=0,A=3,B=4 可能吗?不使用PHP或其他脚本?这是一个快速而肮脏的尝试,但似乎得到了预期的结果,但不完全确定为什么要这样做 在完成了下面的查询之后,您所

我的桌子a:

A|B|C // Columns
3|4|0 // Values
我想先做一个小批量的选择。。 大概是这样的:

"SELECT * FROM table_a ORDER BY (smallest of A,B,C first, second and third (Bigger one)) ASC"

returns: C=0,A=3,B=4

可能吗?不使用PHP或其他脚本?

这是一个快速而肮脏的尝试,但似乎得到了预期的结果,但不完全确定为什么要这样做


在完成了下面的查询之后,您所要求的似乎与预期不符。为什么列顺序特别重要?在某种程度上,不可能真正做到您似乎要求的事情,因为这需要动态重命名列。ORDERBY与排序行而不是列相关,因此在本例中不起任何作用。
SELECT
    l2.A,
    l2.B,
    l2.C
FROM (
    SELECT
        l1.A,
        l1.B,
        l1.C,
        l1.smallestColumn,
        l1.largestColumn,
        CASE
            WHEN l1.A > l1.smallestColumn AND l1.A < l1.largestColumn THEN l1.A
            WHEN l1.B > l1.smallestColumn AND l1.B < l1.largestColumn THEN l1.B
            ELSE l1.C -- Fallback to C, in case of a tied result
        END AS middleColumn
    FROM (
        SELECT
            A,
            B,
            C,
            LEAST( A , B , C ) AS smallestColumn,
            GREATEST( A , B , C ) AS largestColumn
        FROM table_a
    ) l1
) l2
ORDER BY
    l2.smallestColumn,
    l2.middleColumn,
    l2.largestColumn;