Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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
Php 使用orderby和FIELD函数为每个自定义列表获取单个值_Php_Mysql_Sql_Laravel - Fatal编程技术网

Php 使用orderby和FIELD函数为每个自定义列表获取单个值

Php 使用orderby和FIELD函数为每个自定义列表获取单个值,php,mysql,sql,laravel,Php,Mysql,Sql,Laravel,我有一个名为orders的表,有两列orderNumber和status,如下所示: orderNumber | status ---------------------------- 10100 | Shipped | 10101 | Resolved | 10102 | Shipped | 10103 | Resolved | 10104 | Cancelled | 10105

我有一个名为
orders
的表,有两列
orderNumber
status
,如下所示:

orderNumber | status
----------------------------
10100       |   Shipped     |
10101       |   Resolved    |
10102       |   Shipped     |
10103       |   Resolved    |
10104       |   Cancelled   |
10105       |   Shipped     |
10106       |   Cancelled   |
10107       |   Disputed    |
10108       |   In Process  |
10109       |   Cancelled   |
我希望获得订单号为order by custom list的单一状态,如下所示:

orderNumber | status
----------------------------
10108       |   In Process  |
10104       |   Cancelled   |
10101       |   Resolved    |
10107       |   Disputed    |
10100       |   Shipped     |
我尝试了以下查询:

SELECT orderNumber, status 
FROM orders 
ORDER BY FIELD(status, 'In Process', 'On Hold', 'Cancelled', 'Resolved', 'Disputed', 'Shipped')

但这会给我所有排序结果。

看起来您希望按
状态
分组,为每个
状态
值选择最小的
订单号
,然后根据
字段
表达式进行排序。您可以使用此查询执行此操作:

SELECT MIN(orderNumber) AS orderNumber, status
FROM orders
GROUP BY status
ORDER BY FIELD(status, 'In Process', 'On Hold', 'Cancelled', 'Resolved', 'Disputed', 'Shipped')
输出:

orderNumber     status
10108           In Process
10104           Cancelled
10101           Resolved
10107           Disputed
10100           Shipped

您似乎希望按
状态
分组,为每个
状态
值选择最小的
订单号
,然后根据
字段
表达式进行排序。您可以使用此查询执行此操作:

SELECT MIN(orderNumber) AS orderNumber, status
FROM orders
GROUP BY status
ORDER BY FIELD(status, 'In Process', 'On Hold', 'Cancelled', 'Resolved', 'Disputed', 'Shipped')
输出:

orderNumber     status
10108           In Process
10104           Cancelled
10101           Resolved
10107           Disputed
10100           Shipped

是什么定义了输出中应该包含哪些
orderNumber
?为什么在orderby字段中使用字段值?是什么定义了输出中应该包含哪些
orderNumber
?为什么在orderby字段中使用字段值?另一个查询:1。如何获得orderNumber的随机顺序?2.当orderNumber是string时,如何得到相同的结果?@AnkurMishra我不知道你所说的1是什么意思。对于2,即使orderNumber是字符串,如果它们都是5个字符长的话,查询也应该可以正常工作,因为在这种情况下MIN仍然可以工作。还有一个查询:1。如何获得orderNumber的随机顺序?2.当orderNumber是string时,如何得到相同的结果?@AnkurMishra我不知道你所说的1是什么意思。对于2,即使orderNumber是字符串(如果它们都是5个字符),查询也应该可以正常工作,因为在这种情况下MIN仍然可以工作。