繁体   English   中英

按FIELD()和字段名称排序

[英]order by FIELD() with field name

如何按FIELD排序,但我想显示状态名称的每个字段; 下面是我当前的SQL语句

SQL:

SELECT m.*, s.* 
    FROM mall m 
    LEFT JOIN `state` s 
        ON(m.state_id=s.state_id) 
    WHERE m.mall_status="1" AND m.state_id !="0" 
    ORDER BY FIELD(m.state_id, 14, 12, 13) ASC , m.mall_name ASC 
    LIMIT 0,30

数据库:

mall_id   | mall_name        |  state_id
3331410     1 Mont Kiara        14  
3331411     AEON Metro Prima    14  
3331412     AEON Alpha Angle    13  
3331419     Cap Square          13
3331423     Fahrenheit 88       12
3331428     KL Festival City    12
3331430     Low Yat Plaza       12

state_id | state_name
14         Kuala Lumpur
13         Sarawak
12         Sabah

当前结果:

1 Mont Kiara        14  
AEON Metro Prima    14 
Fahrenheit 88       12
KL Festival City    12
Low Yat Plaza       12  
AEON Alpha Angle    13  
Cap Square          13    

//loop
echo $row['mall_name'] . ' ' . $row['state_id'] 

但我想要的结果如下所示( 具有状态名称,但仅显示在顶部 ):

Kuala Lumpur  <-- add state_name 
1 Mont Kiara        14  
AEON Metro Prima    14  

Sabah
Fahrenheit 88       12
KL Festival City    12
Low Yat Plaza       12

Sarawak
AEON Alpha Angle    13  
Cap Square          13

每次状态更改时,您都需要echo显您所在行的状态名称:

echo $row['state_name'];

因此,在循环的顶部 ,您将需要某种中断条件:

if ($state_id != $row["state_id"])
{
    echo $row['state_name'];
    $state_id = $row["state_id"];
}

这将确保状态名称在所有详细信息之前被回显一次

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM