gpt4 book ai didi

MySql查询找到最低高

转载 作者:行者123 更新时间:2023-11-29 06:56:28 26 4
gpt4 key购买 nike

我有一个包含数据的表:

BID     USER    RETRACTED
1500 75 0
1900 75 0
2000 75 0
2000 75 0
2500 586 0
2750 75 0
3000 75 0
3250 1010 0
3500 75 0
3750 1010 0
4000 75 0

这是一个投标平台,但我遇到的问题是用户可以撤回他们的投标。如果他们这样做,则需要修改数据库中的信息。出价是递增的。

目前我知道,如果 USER 1010 撤回他们的出价,最高出价仍然是 4000,而我实际上需要它是 2750,因为这是 2 个用户之间的最高值。

最佳答案

这将是最简单的部分:

  1. 首先,删除属于撤回用户的出价。
  2. 然后,选择出价最高者的用户 ID。
  3. 接下来,找到不是最高出价者出价的最高出价。
  4. 获得高于第 3 步中找到的最低出价。这将是新的最高出价。
  5. 最后,删除除一个高出价之外的所有出价。

像这样:

DELETE FROM bids WHERE user=1010;
SET @highbidder=(SELECT user FROM bids ORDER BY bid DESC LIMIT 1;
SET @secondbid=(SELECT bid FROM bids WHERE user != @highbidder ORDER BY bid DESC LIMIT 1);
SET @newhigh=(SELECT bid FROM bids WHERE bid > @secondbid ORDER BY bid ASC LIMIT 1)
DELETE FROM bids WHERE bid > @newhigh;

三个 SET 语句可以被压缩:

SET @newhigh=(SELECT bid FROM bids WHERE bid > (SELECT bid FROM bids WHERE user != (SELECT user FROM bids ORDER BY bid DESC LIMIT 1) ORDER BY bid DESC LIMIT 1) ORDER BY bid ASC LIMIT 1);

但是我认为这不是一个好主意,部分是出于性能原因,但主要是为了可读性。

关于MySql查询找到最低高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12417758/

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