gpt4 book ai didi

MySQL删除同一张表中的重复项

转载 作者:行者123 更新时间:2023-12-01 00:25:29 24 4
gpt4 key购买 nike

我一直在思考这个问题,并在堆栈交换中看到了一些类似的情况,但我读得越多就越困惑!我有一个包含以下内容的表格:

id | zipcode | provider | channel
---------------------------------
1 | 91773 | 342 | 0
2 | 91773 | 2261 | 177
3 | 91773 | 5590 | 0
4 | 91773 | 5590 | 0
5 | 91773 | 5590 | 135
6 | 91773 | 5590 | 0
7 | 91773 | 6010 | 0
8 | 91773 | 6010 | 0

我只想保留一个记录,如果 channel 除了 0 之外还有任何内容,那么我们将保留它。所以它应该返回这个:

id | zipcode | provider | channel
---------------------------------
1 | 91773 | 342 | 0
2 | 91773 | 2261 | 177
5 | 91773 | 5590 | 135
8 | 91773 | 6010 | 0

我尝试了很多查询,但没有一个有效。提前致谢。

编辑:我已经尝试了一些给出的例子,但似乎没有一个给出正确的信息,一个更好的例子是使用这些,你可以明白为什么:插入 unicorn 值

(1, 91773, 342, 0),
(2, 91773, 2261, 177),
(3, 91773, 5590, 0),
(4, 91773, 5590, 0),
(5, 91773, 5590, 135),
(6, 91773, 5590, 0),
(7, 91773, 6010, 0),
(8, 91773, 6010, 0),
(9, 91776, 5590, 135),
(10, 91776, 5590, 0),
(11, 91776, 6010, 0),
(12, 91776, 6010, 0);

最佳答案

像这样的东西应该有用...

DELETE unicorns 
FROM unicorns
WHERE id NOT IN (SELECT id
FROM (SELECT unicorns.provider,
Max(id) AS id
FROM unicorns
LEFT JOIN (SELECT provider,
Max(channel) AS channel
FROM unicorns
GROUP BY provider) p
ON p.provider = unicorns.provider
AND p.channel = unicorns.channel
WHERE p.provider IS NOT NULL
GROUP BY unicorns.provider) p2)

See the demo

关于MySQL删除同一张表中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15144981/

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