我的数据就像
| 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 秒内得到结果,但是当我在生产服务器上运行相同的查询时,查询会挂起数小时,并发送消息数据、填充临时表... 为什么这个查询给我带来这么多麻烦以及如何扩展它以便我可以运行它以避免这个发送数据问题?
最佳答案
尝试使用自连接,例如:
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
关于mysql 查询,不太复杂的查询出现 "sending data"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42780549/