如何按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
答案 0 :(得分:1)
每次状态发生变化时,您需要echo
您所在行的状态名称:
echo $row['state_name'];
你的循环顶部 ,你需要某种休息条件:
if ($state_id != $row["state_id"])
{
echo $row['state_name'];
$state_id = $row["state_id"];
}
这将确保状态名称在所有详细信息出现之前被一次回显。