从 mysql 查询中获取最大数字
Getting the highest number from a mysql query
我的问题是我需要创建一个订单,以便我可以在此 Web 应用程序中上下移动项目。但是,我无法通过具有增量值的索引来索引订单(ord 列)值,因为同一 table 中有几家公司使用此列。
我的table结构是这样的:
现在我认为最简单的方法是做一个 MAX 并获取最高的数字并将其用作某种方式的索引,这样您就不会为特定的上市公司两次获得相同的数字你去添加一个公司的新条目。
SELECT MAX(ord) FROM phonebook WHERE `id_company` = "51";
这是明智的选择吗?或者可能为每个客户创建一个新数据库并创建和索引并将其用作订购条目的方式?
我建议您在分配 ord
值时不要追求完美。您可以通过以下方式解决此问题:
- 不要让
ord
独一无二。 (不是)。
- 依靠
phonebook_name
的顺序来获得良好的名称顺序。 MySQL 正是出于这个目的而拥有这些出色的不区分大小写的排序规则。
- 我想您正试图让公司的某些条目排在第一位,而其他条目排在最后。将每个人的
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
我的问题是我需要创建一个订单,以便我可以在此 Web 应用程序中上下移动项目。但是,我无法通过具有增量值的索引来索引订单(ord 列)值,因为同一 table 中有几家公司使用此列。
我的table结构是这样的:
现在我认为最简单的方法是做一个 MAX 并获取最高的数字并将其用作某种方式的索引,这样您就不会为特定的上市公司两次获得相同的数字你去添加一个公司的新条目。
SELECT MAX(ord) FROM phonebook WHERE `id_company` = "51";
这是明智的选择吗?或者可能为每个客户创建一个新数据库并创建和索引并将其用作订购条目的方式?
我建议您在分配 ord
值时不要追求完美。您可以通过以下方式解决此问题:
- 不要让
ord
独一无二。 (不是)。 - 依靠
phonebook_name
的顺序来获得良好的名称顺序。 MySQL 正是出于这个目的而拥有这些出色的不区分大小写的排序规则。 - 我想您正试图让公司的某些条目排在第一位,而其他条目排在最后。将每个人的
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