gpt4 book ai didi

用于删除特定行的 MySQL 脚本

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

我有一个像这样的 MySQL 表:

--------------------------------------------------
| Field | Type | Null | Key | Default | Extra |
--------------------------------------------------
| A | int(11) | NO | PRI | NULL | |
--------------------------------------------------
| B | int(11) | NO | PRI | NULL | |
--------------------------------------------------
| C | int(11) | NO | | NULL | |
--------------------------------------------------

我想删除每个 A 值的所有行,其中 C 值不在该特定 A 的前 10(最大)C 值中。因此第一个 A 将保留 10 个值,第二个 A 将保留 10 个值, 第三个有 10 个值...

谢谢

这是一个例子:

-------------
| A | B | C |
-------------
| 1 | 2 | 5 |
-------------
| 1 | 3 | 2 |
-------------
| 1 | 5 | 9 |
-------------
| 1 | 4 | 7 |
-------------
| 1 | 8 | 4 |
-------------
| 2 | 1 | 5 |
-------------
| 2 | 3 | 8 |
-------------
| 2 | 5 | 7 |
-------------
| 2 | 4 | 6 |
-------------
| 2 | 7 | 9 |
-------------
| 2 | 8 | 1 |
-------------

假设我只想要前 2 名,而不是前 10 名。那么结果:

-------------
| A | B | C |
-------------
| 1 | 5 | 9 |
-------------
| 1 | 4 | 7 |
-------------
| 2 | 7 | 9 |
-------------
| 2 | 3 | 8 |
-------------

最佳答案

你可以像那样在最大值和小于最大值之间使用联合

  SELECT A,B,t1.C from table1 t1
INNER JOIN (select max(C) max1 from table1) t2
ON t1.C= t2.max1

UNION

SELECT A,B,MAX(C) MAX1 from table1 t3
INNER JOIN (select MAX(C) MAX2 from table1) t4
WHERE t3.c < t4.max2
GROUP BY A

ORDER BY A

输出就是这样

Obs:如果您接受它,这只是我的一次尝试和提示和解决方法,您可以自己修复它。我没有得到正确的 B 我不知道为什么。它在 UNION 的第二部分中获取下一个最大数字

在这里DEMO ON SQLFIDDLE

关于用于删除特定行的 MySQL 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14274229/

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