gpt4 book ai didi

php - 新插入的数据必须首先显示

转载 作者:行者123 更新时间:2023-11-29 04:36:32 25 4
gpt4 key购买 nike

我在这张表中有一些产品:

Id | Name | Order
------------------
3 | Prod3 | 1
2 | Prod2 | 2
1 | Prod1 | 3

我需要的是:当添加一些新产品时,新产品应该是'order'(INT)订购的第一个产品,如下所示:

Id | Name | Order
------------------
4 | NewPr | 1
3 | Prod3 | 2
2 | Prod2 | 3
1 | Prod1 | 4

这意味着其他的应该是:上一个订单 + 1

如何使用 SQL 实现这一点?


目前我正在这样做(与我现在需要的相反):

插入前,获取最后的订单号

$query = mysqli_query($link, "SELECT `order` FROM `products` ORDER BY `order` DESC LIMIT 1");
while($orderData = mysqli_fetch_array($query)) {
$lastOrder = $orderData['order'];
};
$newOrder = $lastOrder + 1;

添加新产品

INSERT INTO `products` (`name`, `order`)
VALUES ('MyLastestProd', $newOrder)

谢谢。

编辑:我使用这些数字是因为在其他页面中我有一个可拖动选项来重新订购这些产品。

编辑 2: 解决了显示按“订单”DESC 订购的产品的问题。所以使用 previous order + 1 它对我很有用。更改也应用于 UI 可拖动功能。

最佳答案

实现此目的的更简单方法是将您的订单表列更改为名为“DateAdded”且默认值为“CURRENT_TIMESTAMP”的时间戳字段

然后,当向您的表中插入一个新行时,您根本不需要给它一个命令,当从您的表中选择行时:

SELECT * FROM MyTable ORDER BY DateAdded DESC

这种方法在执行时间上会容易得多,而不必更新表中的每一行。

出于兴趣,为什么必须在最顶部插入一个新行?如果您只想选择最新的行,那么您已经有一个 ID 列,我认为它是一个设置了 auto_increment 属性的主键?

那么,为什么不直接使用 ID 列作为选择查询中的排序列呢?

编辑

刚刚看到你的编辑,我现在明白了。

您可以同时使用日期字段和订单字段在查询中进行双重排序。

例如:如果您添加的每个新产品的订单值为零,并且旁边记录了时间戳,您仍然可以正确订购这些产品,并且仍然允许用户重新订购它们。

关于php - 新插入的数据必须首先显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40157478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com