首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php mysql按优先级和排序排序

php mysql按优先级和排序排序
EN

Stack Overflow用户
提问于 2013-12-22 13:45:36
回答 1查看 450关注 0票数 3

我有下表:

代码语言:javascript
复制
 Properties
 id     agency_id     refno
 1       1            AA101
 2       3            AA201
 3       2            AA501
 4       1            AA762
 5       3            AA555

 agency
 agency_id      agency_name     priority
  1                A              30
  2                B              10
  3                C              20

我已在代理表中确定了每个机构的优先次序:

现在,我想根据排名和优先级从属性表中提取行。我想从第一代理机构提取第一排,从第二代理机构提取第一排,从第三代理机构提取第一排,等等。

然后是第二排从第一机构,第二排从第二代理,第二排从第三代理,等等。

然后我想根据每个机构的优先级对整个结果进行排序。我使用以下子句,但它没有给出预期的结果

代码语言:javascript
复制
 select properties.id,
        properties.agency_id,
        IF(@prev <> properties.agency_id, @cnt := 1, @cnt := @cnt + 1) AS rank, @prev := properties.agency_id,
        properties.refno
 where properties.agency_id = agency.agency_id
        order by agency.priority, rank

我已经把连接放好了,它的工作正常,没有错误。但我需要以下结果:

我已经在代理表中定义了每个机构的优先级。这个查询在join中运行良好。我需要以下结果:

代码语言:javascript
复制
 agency2 row1
 agency3 row1
 agency1 row1

 agency2 row2
 agency3 row2
 agency1 row2

 agency2 row3
 agency3 row3
 agency1 row3

根据代理表中定义的优先级和等级。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-22 13:52:29

请看一遍JOIN的细节

查询必须join这两个表。

代码语言:javascript
复制
select 
  properties.id,
  properties.agency_id,
  IF(@prev <> properties.agency_id, @cnt := 1, @cnt := @cnt + 1) AS rank, 
  @prev := properties.agency_id,
  properties.refno
FROM properties
INNER JOIN agency  ON properties.agency_id = agency.agency_id
order by agency.priority, rank 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20730089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档