我有一个表,在那里的消息列表,这将随机显示在前端。消息表最近添加了一个名为“优先级”的字段,其中我存储了3个值“低”、“中”、“高”。基于此优先级,在前端显示记录的数量。它在前端显示的次数也被存储在同一个表中的字段名称' displayed‘下。在mysql查询中,是否可以根据这个“优先级”列和“显示次数”列来选择要显示的记录?或者这只能在php级别上完成?
The older table format:
ID MESSAGEHEAD MESSAGEDESC DISPLAYED
1 message title 1 message description 1 15
2 message title 2 message description 2 17
3 message title 3 message description 3 16
and so on....
因此,我编写了以下代码来获取要在前端显示的消息。
// Logic of getting message based on the configuration.
$messages_query = @mysql_query('select * from c_messages order by displayed asc limit 3');
if(@mysql_num_rows($messages_query)){
$total_messages = @mysql_num_rows($messages_query);
while($message = @mysql_fetch_array($messages_query)){
$messages_xml .= '<message><messagehead>'.$message['messagehead'].'</messagehead><mesagedesc>'.$message['mesagedesc'].'</mesagedesc></message>';
}
}
它为所有可用消息赋予优先级,并在前端平等地显示它。现在我已经更改了数据库,使其多了一个名为“优先级”的字段。
The new table format:
ID MESSAGEHEAD MESSAGEDESC DISPLAYED PRIORITY
1 message title 1 message description 1 15 HIGH
2 message title 2 message description 2 17 LOW
3 message title 3 message description 3 16 MEDIUM
and so on....
根据优先级,消息应该在前端得到服务。因此,查询必须根据这个“优先级”和“显示”字段来执行获取记录的逻辑。
我的意思是显示时间应该如下所示。
MESSAGE PRIORITY DISPLAYED
MESSAGE1 - HIGH - 45 TIMES
MESSAGE2 - HIGH - 45 TIMES
MESSAGE3 - LOW - 15 TIMES
MESSAGE4 - MEDIUM - 30 TIMES
您在上面看到的优先级决定了消息显示的次数。我真的很抱歉,我不能得到一个明确的想法如何实现这一点。如果有人有逻辑,请解释一下。如果你能给我一个提示,我需要继续下去,我可以尝试得到解决。非常感谢提前。
发布于 2015-01-12 16:26:48
也许就像这样
select * from c_messages order by priority, displayed desc;
或者,如果按优先级递增的顺序声明枚举,则在优先级后添加desc
;
https://stackoverflow.com/questions/27894776
复制相似问题