首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据字段对记录进行优先级排序的逻辑

根据字段对记录进行优先级排序的逻辑
EN

Stack Overflow用户
提问于 2015-01-12 11:12:31
回答 1查看 207关注 0票数 0

我有一个表,在那里的消息列表,这将随机显示在前端。消息表最近添加了一个名为“优先级”的字段,其中我存储了3个值“低”、“中”、“高”。基于此优先级,在前端显示记录的数量。它在前端显示的次数也被存储在同一个表中的字段名称' displayed‘下。在mysql查询中,是否可以根据这个“优先级”列和“显示次数”列来选择要显示的记录?或者这只能在php级别上完成?

代码语言:javascript
运行
复制
 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....

因此,我编写了以下代码来获取要在前端显示的消息。

代码语言:javascript
运行
复制
        // 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>';
            }
        }

它为所有可用消息赋予优先级,并在前端平等地显示它。现在我已经更改了数据库,使其多了一个名为“优先级”的字段。

代码语言:javascript
运行
复制
 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....

根据优先级,消息应该在前端得到服务。因此,查询必须根据这个“优先级”和“显示”字段来执行获取记录的逻辑。

我的意思是显示时间应该如下所示。

代码语言:javascript
运行
复制
  MESSAGE        PRIORITY    DISPLAYED
  MESSAGE1     - HIGH      - 45 TIMES
  MESSAGE2     - HIGH      - 45 TIMES
  MESSAGE3     - LOW       - 15 TIMES
  MESSAGE4     - MEDIUM    - 30 TIMES

您在上面看到的优先级决定了消息显示的次数。我真的很抱歉,我不能得到一个明确的想法如何实现这一点。如果有人有逻辑,请解释一下。如果你能给我一个提示,我需要继续下去,我可以尝试得到解决。非常感谢提前。

EN

回答 1

Stack Overflow用户

发布于 2015-01-12 16:26:48

也许就像这样

代码语言:javascript
运行
复制
select * from c_messages order by priority, displayed desc;

或者,如果按优先级递增的顺序声明枚举,则在优先级后添加desc

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27894776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档