php - 按 FIELD() 使用字段名称排序

标签 php mysql sql

如何按 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"];
}

这将确保状态名称在所有详细信息出现之前一次得到回显。

关于php - 按 FIELD() 使用字段名称排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21554218/

相关文章:

sql - 斯卡拉 : Spark sqlContext query

java - 当所有参数都为空时 COALESCE 的替代方案

php - MySQL插入特殊字符

php - 使用 preg_match_all 将所有数字与正则表达式匹配

mysql - 如何将SQL表结构生成为文本表?

php - 一列的多个值 PHP 和 SQL

javascript - 使用 .htpasswd 锁定 .user.js 文件

php - 为什么我的服务器要加载这些 PHP 变量?

php - 处理通过应用程序的数据流的正确方法

sql - 尝试访问我域中的 SQL Server 2008 服务器时,出现 "server not found or was not accessible"错误