Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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
在resultset中对MySQL结果进行排序_Mysql - Fatal编程技术网

在resultset中对MySQL结果进行排序

在resultset中对MySQL结果进行排序,mysql,Mysql,我有一个由10个结果组成的结果集。 其中3个有“梨”型,接下来的3个有“苹果”型,接下来的3个有“香蕉”型。最后一条记录有一种“挤压设备”——与水果无关。 我如何以我指定的分组顺序返回这组结果(也用于分页),而不使用任何固有的排序因子,如ALPHABETA或ID等? 在运行代码之前,我可以使用所有类型,以便可以指定它们。 i、 e 这将首先按字母顺序对非挤压设备的所有类型进行排序: select ID, Type from MyTable order by case when Type = 'S

我有一个由10个结果组成的结果集。 其中3个有“梨”型,接下来的3个有“苹果”型,接下来的3个有“香蕉”型。最后一条记录有一种“挤压设备”——与水果无关。 我如何以我指定的分组顺序返回这组结果(也用于分页),而不使用任何固有的排序因子,如ALPHABETA或ID等? 在运行代码之前,我可以使用所有类型,以便可以指定它们。 i、 e


这将首先按字母顺序对非挤压设备的所有类型进行排序:

select ID, Type
from MyTable
order by case when Type = 'Squeezing Equipment' then 1 else 0 end, Type
如果您有多个非水果类型,您可以执行以下操作:

select ID, Type
from MyTable
order by case when Type in ('Squeezing Equipment', 'some other type') then 1 else 0 end, Type

这将首先按字母顺序对非挤压设备的所有类型进行排序:

select ID, Type
from MyTable
order by case when Type = 'Squeezing Equipment' then 1 else 0 end, Type
如果您有多个非水果类型,您可以执行以下操作:

select ID, Type
from MyTable
order by case when Type in ('Squeezing Equipment', 'some other type') then 1 else 0 end, Type

难道一个简单的订货人和分组人就不能做到这一点吗?还是我遗漏了什么

SELECT ID, Type FROM TheFruityTable 
GROUP BY Type 
ORDER BY Type;

难道一个简单的订货人和分组人就不能做到这一点吗?还是我遗漏了什么

SELECT ID, Type FROM TheFruityTable 
GROUP BY Type 
ORDER BY Type;

使用ORDERBY子句。如果您想让“挤压设备”排在最后,请使用以下方法:

ORDER BY CASE name
    WHEN 'Bananas' THEN 1
    WHEN 'Apples' THEN 2
    WHEN 'Pears' THEN 3
    WHEN 'Squeezing Equipment' THEN 4
    END

使用ORDERBY子句。如果您想让“挤压设备”排在最后,请使用以下方法:

ORDER BY CASE name
    WHEN 'Bananas' THEN 1
    WHEN 'Apples' THEN 2
    WHEN 'Pears' THEN 3
    WHEN 'Squeezing Equipment' THEN 4
    END

这将是理想的,只是查询中的最后一个ORDERBY将按字母顺序按类型排序,我需要指定首先出现的内容。i、 香蕉必须先于苹果,然后才是梨。啊,我现在明白了。为什么不添加另一个交叉引用类型并指定排序顺序的表呢?这很理想,只是查询中的最后一个order by将按字母顺序按类型排序,我需要指定首先出现的内容。i、 香蕉必须先于苹果,然后才是梨。啊,我现在明白了。为什么不添加另一个交叉引用类型并指定排序顺序的表呢?这样做有效吗:orderbytype='Bananas',name='Apples',name='Pears',name?(或类似的东西)@InnateDev:是的,那会起作用,但它会以与你想要的相反的顺序给出结果。或者你可以用一个例子——我已经更新了我的答案。一个非常通用的解决方案,你说呢?这个方法有效吗:按类型排序='香蕉',名称='苹果',名称='梨',名称?(或类似的东西)@InnateDev:是的,那会起作用,但它会以与你想要的相反的顺序给出结果。或者你可以用一个案例——我已经更新了我的答案。一个非常通用的解决方案,你说呢?