mysql查询,"发送数据"没有那么复杂的查询错误

时间:2017-03-14 07:57:39

标签: mysql sql database

我的数据就像

| order_id  |  user_id  |     ip      |
---------------------------------------
| 1001      |   2       | 192.168.1.1 |    
| 1002      |   5       | 192.168.1.1 |    
| 1003      |   2       | 192.168.1.1 |    
| 1004      |   12      |   18.15.0.1 |    
| 1005      |   9       |    10.0.0.1 |  

SELECT "ip", user_id
FROM userlog
WHERE "ip" IN (
    SELECT "ip"
    FROM userlog
    GROUP BY "ip"
    HAVING COUNT(*) > 1
)
GROUP BY "ip"
ORDER BY "id" DESC

当我在桌面上运行此查询时,我在1秒钟内得到结果,但是当我在生产服务器上运行同样的查询时,查询会挂起数小时,并显示消息发送数据,填充临时表... 为什么这个查询给了我很多麻烦以及如何扩展它以便我可以运行它来避免这种发送数据问题?

1 个答案:

答案 0 :(得分:0)

尝试自我加入,例如:

SELECT u1."ip", u1.user_id
FROM userlog u1
JOIN userlog u2
    ON u1.ip = u2.ip and u1.order_id <> u2.order_id
ORDER BY u1."id" DESC