gpt4 book ai didi

sql - 具有共同数据的新记录

转载 作者:行者123 更新时间:2023-11-29 01:34:23 24 4
gpt4 key购买 nike

我有一个这样的表(MySQL 5.0.x,MyISAM):

user{id, login, ip, banned} (Banned: 0 false, 1 true)

如果至少有 5 个具有相同 ip 的其他用户已被禁止 (banned=1),我想找到所有未被禁止的用户 (banned=0) .

感谢您的帮助! :)

最佳答案

如果您有很多被禁止的用户:

SELECT  *
FROM user uo
WHERE EXISTS (
SELECT 1
FROM user ui
WHERE ui.ip = uo.ip
AND banned = 1
LIMIT 4, 1
)
AND banned = 0

如果您的被禁用户很少:

SELECT  *
FROM user
WHERE ip IN (
SELECT ip
FROM user
WHERE banned = 1
GROUP BY
ip
HAVING COUNT(*) >= 5
)
AND banned = 0

在这两种情况下,在 (ip, banned) 上建立索引将大大改善这些查询。

关于sql - 具有共同数据的新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1012475/

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