Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中通过用户名检测IP多账户_Mysql - Fatal编程技术网

MySQL中通过用户名检测IP多账户

MySQL中通过用户名检测IP多账户,mysql,Mysql,我想用MySQL查询找到多个帐户 按时间戳ASC从{table}顺序选择Differentip作为ip、名称; 它列出了所有的时尚元素: ip, name, timestamp 1, me, 2013-09-19 19:58:52 2, me, 2013-09-19 18:00:00 123, us, 2013-09-19 20:58:52 2, you, 2013-09-19 09:58:52 但如何用逻辑进行选择: 找到name=me的所有IP地址 获取IP匹配点1的所有行。 从第2点选

我想用MySQL查询找到多个帐户 按时间戳ASC从{table}顺序选择Differentip作为ip、名称; 它列出了所有的时尚元素:

ip, name, timestamp

1, me, 2013-09-19 19:58:52
2, me, 2013-09-19 18:00:00
123, us, 2013-09-19 20:58:52
2, you, 2013-09-19 09:58:52
但如何用逻辑进行选择:

找到name=me的所有IP地址 获取IP匹配点1的所有行。 从第2点选择“全部”。但1对ip nick仅1行,其中 这是timestam的最新版本 伪查询: 从表中选择*,其中name=me+与me-ip匹配的所有其他行,其中该行与ip必须为me的最新时间戳

返回:

1, me, 2013-09-19 19:58:52
2, you, 2013-09-19 09:58:52

如果您知道ex的一半答案。如何在没有最新时间戳的情况下完成,我也欢迎您回答。

这将显示所有匹配项,而不仅仅是最新的。所以这不满足第3点。除非有人抢先一步,否则我会编辑

SELECT  t1.*

FROM    table as t1

        JOIN (SELECT ip FROM table GROUP BY ip HAVING COUNT(*) > 1) as dup
        ON t1.ip = dup.ip

ORDER BY t1.ip

这将显示所有匹配项,而不仅仅是最新的匹配项。所以这不满足第3点。除非有人抢先一步,否则我会编辑

SELECT  t1.*

FROM    table as t1

        JOIN (SELECT ip FROM table GROUP BY ip HAVING COUNT(*) > 1) as dup
        ON t1.ip = dup.ip

ORDER BY t1.ip
以下是第二点:

SELECT t1.*
FROM Table t1
JOIN (SELECT DISTINCT ip
      FROM Table
      WHERE name = "me") me_ip
ON t1.ip = me_ip.ip
以下是三点:

SELECT t2.*
FROM Table t2
JOIN (SELECT t1.ip, t1.name, MAX(t1.timestamp) maxtime
      FROM Table t1
      JOIN (SELECT DISTINCT ip
            FROM Table
            WHERE name = "me") me_ip
      ON t1.ip = me_ip.ip
      GROUP BY t1.ip, t1.name) t3
ON t2.ip = t3.ip AND t2.name = t3.name AND t2.timestamp = t3.maxtime
以下是第二点:

SELECT t1.*
FROM Table t1
JOIN (SELECT DISTINCT ip
      FROM Table
      WHERE name = "me") me_ip
ON t1.ip = me_ip.ip
以下是三点:

SELECT t2.*
FROM Table t2
JOIN (SELECT t1.ip, t1.name, MAX(t1.timestamp) maxtime
      FROM Table t1
      JOIN (SELECT DISTINCT ip
            FROM Table
            WHERE name = "me") me_ip
      ON t1.ip = me_ip.ip
      GROUP BY t1.ip, t1.name) t3
ON t2.ip = t3.ip AND t2.name = t3.name AND t2.timestamp = t3.maxtime

哇,这个t1.*东西叫什么?文档将met1命名为一个表别名,*表示所有列。他在哪里说他只想要COUNT*>1?从标题上看,我猜他在寻找DUP。不,他说他只想在有DUP时显示具有最新时间戳的行。哇,这个t1.*东西叫什么名字?文档将met1命名为一个表别名,*表示所有列。他在哪里说他只想要COUNT*>1?从标题中,我假设他在寻找DUP。不,他说他只想在有DUP时显示具有最新时间戳的行。所需结果的第二行不应该是2吗,您?更正-编辑了我的问题。所需结果的第二行不应该是2,您?更正-编辑了我的问题。