代码之家  ›  专栏  ›  技术社区  ›  Toto

具有通用数据的新记录

  •  2
  • Toto  · 技术社区  · 17 年前

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

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

    banned=0 banned=1

    2 回复  |  直到 17 年前
        1
  •  4
  •   Quassnoi    17 年前

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

    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)

        2
  •  1
  •   defines    17 年前
    SELECT id
    FROM user
    WHERE ip IN (
     SELECT DISTINCT ip
     FROM user
     WHERE COUNT(*) >= 5
      AND banned = 1
     GROUP BY ip
    )
     AND banned = 0