从mysql查询中获取最高数字

时间:2015-06-30 16:43:04

标签: mysql database database-design

我的问题是我需要创建一个订单,以便我可以在此Web应用程序中上下移动项目。但是,我无法通过具有增量值的索引来索引订单(ord列)值,因为同一个表中有多个公司使用此列。

我的表结构是这样的: enter image description here

现在我认为最简单的方法是做一个MAX并抓住最高的数字并将其作为索引用于某种方式,这样当你去的时候,对于特定的公司列表你永远不会得到两次相同的数字为公司添加新条目。

SELECT MAX(ord) FROM phonebook WHERE `id_company` = "51";

这是一条明智的选择吗?或者可以为每个客户创建一个新数据库并创建和索引并将其用作订单条目的方式?

1 个答案:

答案 0 :(得分:1)

我建议您在分配ord值时不要完全完美。您可以按照以下方式解决这个问题:

  1. 不要让ord与众不同。 (不是。)
  2. 依靠phonebook_name的顺序来获得良好的名称顺序。对于这个目的,MySQL有这些奇妙的不区分大小写的排序规则。
  3. 我想你是想让一家公司的一些参赛作品先来,而其他参赛作品则是最后一篇。为每个人设置ord列为50,然后为您想要的条目提供较低的数字,并将您想要的条目设为较高的数字。
  4. 当您显示特定公司的数据时,请执行此操作...

    SELECT whatever, whatever
      FROM phonebook
     WHERE id_company = 11
     ORDER BY ord, phonebook_name, phonebook_number, id_phonebook
    

    ORDER BY子句将执行您想要的操作,如果存在重复项,它将保持稳定。然后,您可以在用户界面中使用类似的查询移动条目。

    UPDATE phonebook SET ord=ord-1 WHERE id_phonebook = :recordnumber