我对SQL非常陌生,最近我进行了SQL测试。在测试中,我得到了一台笔记本电脑,并被要求解决MySQL中的一些SQL问题。用于测试的数据是一个数据集,它记录每个用户何时登录网站,并且看起来像这样(尽管我得到的数据集比这个大得多):
CREATE TABLE table1 (id INT, login TIMESTAMP);
INSERT INTO table1 (id, login) VALUES
(1,'2018-11-01 00:00:01'),
(1,'2018-11-02 11:00:01'),
(1,'2018-11-03 13:00:01'),
(1,'2018-11-04 15:00:01'),
(1,'2018-11-05 17:00:01'),
(2,'2018-10-01 00:00:01'),
(2,'2018-10-11 10:00:01'),
(2,'2018-10-17 09:00:01'),
(2,'2018-11-11 08:00:01'),
(3,'2018-09-03 14:00:01'),
(3,'2018-09-04 15:00:01'),
(3,'2018-09-04 16:00:01'),
(3,'2018-09-06 18:00:01'),
(3,'2018-09-06 19:00:01'),
(3,'2018-09-06 20:00:01'),
(3,'2018-09-13 04:00:01'),
(3,'2018-09-13 14:00:01'),
(3,'2018-09-23 14:00:01'),
(4,'2018-10-03 11:00:01'),
(4,'2018-11-03 12:00:01'),
(5,'2018-09-01 08:00:01'),
(5,'2018-09-02 09:00:01'),
(5,'2018-09-12 09:00:01'),
(5,'2018-09-22 10:00:01'),
(5,'2018-09-22 19:00:01'),
(6,'2018-10-15 06:00:01'),
(6,'2018-10-18 09:00:01'),
(6,'2018-10-18 10:00:01'),
(6,'2018-10-18 11:00:01'),
(6,'2018-10-19 12:00:01');
我需要弄清楚不同之处。从用户首次访问到他/她随后的每次访问之间的天数。结果表应如下所示:
id,首次访问日期,当前访问,第一次与当前时间之间的差异
我写了以下代码:
SELECT t1.id, t1.first_time, t2.login AS cur_time, DATEDIFF(t2.login, t1.first_time) AS diff
FROM
(SELECT id, min(login) as first_time
FROM table1
GROUP BY id) t1 JOIN table1 t2
ON t1.id=t2.id;
当我尝试使用提供的笔记本电脑运行代码时,出现错误消息,提示“查询期间连接丢失”。
但是我在运行其他代码时没有问题:
SELECT id, min(login) as first_time
FROM table1
GROUP BY id;
但是,即使对于一些简单的代码,我也会收到相同的错误消息:
SELECT *
FROM
(SELECT id, min(login) as first_time
FROM table1
GROUP BY id) t1;
或者当我尝试创建视图或创建临时表时。
此外,当我在自己的笔记本电脑上尝试代码时,没有收到错误消息。
我的问题是:
谢谢!
答案 0 :(得分:0)
尝试
新版本的MySQL WorkBench具有更改特定超时的选项。
For me it was under Edit → Preferences → SQL Editor → DBMS connection read time out (in seconds): 600
参考:here