Mysql通过外部值对唯一字段进行加权
我目前正在寻找一种可能性,通过权重排序mysql结果,这些权重不是结果集或数据库本身的一部分。数据库和权重之间的唯一链接基于权重存在的唯一列 更准确地说,我有MySql表Mysql通过外部值对唯一字段进行加权,mysql,sql,Mysql,Sql,我目前正在寻找一种可能性,通过权重排序mysql结果,这些权重不是结果集或数据库本身的一部分。数据库和权重之间的唯一链接基于权重存在的唯一列 更准确地说,我有MySql表 +-------------------+ |Food | +-------------------+ |id:int(unique) | |name:string | +-------------------+ 食物ID的一个外部重量来源。例如,用户将食物1的权重设置为10
+-------------------+
|Food |
+-------------------+
|id:int(unique) |
|name:string |
+-------------------+
食物ID的一个外部重量来源。例如,用户将食物1的权重设置为100,食物2的权重设置为200,食物3的权重设置为50。我想要的是根据用户给定的权重对结果进行排序
你知道我如何将这些外部信息应用到结果中吗
编辑:我不是在搜索一个解决方案,该解决方案会在以后对查询结果进行排序!我希望结果由mysql服务器排序。给你:
SELECT
CASE id
when 1 then 300
when 2 then 100
when 3 then 200
END as weight
from tab
order by weight;
这里要做的是用自定义值替换现有行值,然后用这些值对其进行排序。现在开始:
SELECT
CASE id
when 1 then 300
when 2 then 100
when 3 then 200
END as weight
from tab
order by weight;
这里要做的是用自定义值替换现有行值,然后用这些值对其进行排序。如果外部源是
php
数组
。然后您应该使用phparray
排序
函数,而不是mysql查询中的排序
从mysql表中获取需要的数据,并将其生成一个php数组。现在制作一个外部源数组,并将这两个数组组合起来,然后使用array
排序
列出了她的PHP数组排序函数。您可以根据需要使用
如果您的外部源代码是
php
array
。然后您应该使用phparray
排序
函数,而不是mysql查询中的排序
从mysql表中获取需要的数据,并将其生成一个php数组。现在制作一个外部源数组,并将这两个数组组合起来,然后使用array
排序
列出了她的PHP数组排序函数。您可以根据需要使用
您所说的外部源是什么意思?我目前正在用php编写此代码,因此外部源是一个php数组(以前由REST请求填充)。您所说的外部源是什么意思?我目前正在用php编写此代码,因此外部源是一个php数组(以前由REST请求填充)在这种情况下,这正是我一直在寻找的。非常感谢你!如果它是正确的,你可以接受它作为正确的答案您知道mysql是否将权重映射到id,以及索引是否也可以与此映射一起使用吗?我不认为索引会出现在这里,因为这是一个临时映射,索引通过数据库存储在内存中。但我不能完全确定,我会尝试找到答案,如果我得到什么,我会发布。@Subodh嘿,很抱歉打扰你,但我也有同样的问题,我想知道是否有其他解决方案?我使用ORM,我并不认为构建1500个条件的案例(我必须对整个表进行排序,每页只返回12个结果)是个好主意。这正是我一直在寻找的。非常感谢你!如果它是正确的,你可以接受它作为正确的答案您知道mysql是否将权重映射到id,以及索引是否也可以与此映射一起使用吗?我不认为索引会出现在这里,因为这是一个临时映射,索引通过数据库存储在内存中。但我不能完全确定,我会尝试找到答案,如果我得到什么,我会发布。@Subodh嘿,很抱歉打扰你,但我也有同样的问题,我想知道是否有其他解决方案?我使用ORM,我真的不认为构建1500个条件(我必须对整个表进行排序,每页只返回12个结果)的案例是个好主意。这对于少量数据来说很好。在我的例子中,db表包含超过一百万个条目。因此,仅仅为了排序和过滤集合到50个条目的第一步,获取完整的dataset int应该比使用mysql功能更昂贵。不过,谢谢你的回答!对于少量数据来说,这看起来不错。在我的例子中,db表包含超过一百万个条目。因此,仅仅为了排序和过滤集合到50个条目的第一步,获取完整的dataset int应该比使用mysql功能更昂贵。不过,谢谢你的回答!