mysql - 从mysql查询中获取最大的数字

标签 mysql database database-design

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

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

现在我认为最简单的方法是执行 MAX 并获取最高的数字,并以某种方式将其用作索引,这样当您访问特定公司时,您就不会两次获得相同的数字为公司添加新条目。

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

这是一条明智的路线吗?或者也许为每个客户端创建一个新数据库并创建和索引并将其用作订单条目的方式?

最佳答案

我建议您在分配 ord 值时不要追求完美。您可以按如下方式摆脱此问题:

  1. 不要使 ord 独一无二。 (事实并非如此)。
  2. 依靠 phonebook_name 的顺序来获得良好的名称顺序。 MySQL 正是为了这个目的而提供了这些出色的不区分大小写的排序规则。
  3. 我想您正在尝试将公司的某些条目放在第一位,而其他条目则放在最后。将每个人的 ord 列设置为 50,然后为您想要的条目提供第一个较小的数字,最后为您想要的条目提供较高的数字。

当您显示特定公司的数据时,请这样做......

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

关于mysql - 从mysql查询中获取最大的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31143856/

相关文章:

MySQL 对多个表进行分区

django - 将 Django 模型/表拆分为两个模型/表是否有性能优势?

php - 如何使用 MIT appinventor 2 和 php 将图像插入 MYSQL 数据库?

mysql - 嵌套数据使用什么表结构?

php - 在实例化自己对象的函数内部使用 PHP 中的模拟对象

php - Mysql从另一个表添加列(没有引用id)

java - 自引用数据库设计

PHP 表单不会更新我的 MySQL 数据库

mysql - 论坛的嵌套数据

php - 是否可以使用 Propel2 进行全文(匹配)查询?