我有下表:
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我已在代理表中确定了每个机构的优先次序:
现在,我想根据排名和优先级从属性表中提取行。我想从第一代理机构提取第一排,从第二代理机构提取第一排,从第三代理机构提取第一排,等等。
然后是第二排从第一机构,第二排从第二代理,第二排从第三代理,等等。
然后我想根据每个机构的优先级对整个结果进行排序。我使用以下子句,但它没有给出预期的结果
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中运行良好。我需要以下结果:
agency2 row1
agency3 row1
agency1 row1
agency2 row2
agency3 row2
agency1 row2
agency2 row3
agency3 row3
agency1 row3根据代理表中定义的优先级和等级。
发布于 2013-12-22 13:52:29
请看一遍JOIN的细节
查询必须join这两个表。
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 https://stackoverflow.com/questions/20730089
复制相似问题