

从上图这张表里,找到每一条记录的前七天之内有没有同一人的记录

然后生成这张表,请问 SQL 该怎么写 QAQ

额,直接输出成这个样子就好……但我还是找不到方法TwT
1 KagamineLenKai2 OP 本菜鸡才意识到 V2EX 的发帖器是 Markdown 格式的,为了发个帖还现去百度的 Markdown 语法 /(ㄒoㄒ)/~~ |
2 xujif 2016-08-26 11:31:17 +08:00 |
3 KagamineLenKai2 OP @xujif 啊,谢谢,不过第一个括号里的(select 1 ……这里有点没看懂? 1 是? |
4 cont 2016-08-26 12:00:50 +08:00 @KagamineLenKai2 1 是代表第一个字段,就是 select name |
5 bugsnail 2016-08-26 12:01:25 +08:00 @KagamineLenKai2 那个是 1 表示 true,配合外面那个 exists |
6 KagamineLenKai2 OP |
8 luckylion 2016-08-26 12:41:10 +08:00 SELECT COUNT(*) AS total,t.* FROM table AS t WHERE DATE_SUB(CURDATE(), INTERVAL 14 DAY) <= DATE(`data`) AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) >= DATE(`data`) GROUP BY idnumber having total > 1 |
9 luckylion 2016-08-26 12:44:18 +08:00 where date_sub(curdate(), INTERVAL 7 DAY) <= date(`data`) |
10 ebony0319 2016-08-26 12:44:22 +08:00 |
11 liyanggyang 2016-08-26 14:04:34 +08:00 |
12 liyanggyang 2016-08-26 14:05:28 +08:00 |
13 liyanggyang 2016-08-26 14:16:54 +08:00 |
14 luckylion 2016-08-26 15:03:50 +08:00 SELECT t.*,if(COUNT(*)>1,"yes","no") AS `<7days` FROM table AS t where 时间判断自己写 GROUP BY idnumber |
15 luckylion 2016-08-26 15:11:37 +08:00 刚才看错了 SELECT * FROM table t LEFT JOIN ( SELECT idnumber, IF(COUNT(*)>1,"yes","no") AS `<7days` FROM table WHERE 时间判断 GROUP BY idnumber ) AS t2 ON t.idnumber=t2.idnumber |
16 luckylion 2016-08-26 15:32:46 +08:00 |
17 KagamineLenKai2 OP @luckylion 请问一下第二个 SELECT 后面的 1 是什么意思? |
18 luckylion 2016-08-26 16:18:51 +08:00 就是一个常量,有信息时直接用这个常量代替.速度要比显示出表里的信息速度快些 select 1 from 可以 select 2 from 也可以 select 'aa' from 还可以 O(∩_∩)O |
19 KagamineLenKai2 OP @luckylion 这样(⊙o⊙) |
20 Layne 2016-08-26 17:36:09 +08:00 @KagamineLenKai2 因为这里只是要判断是否 exists ,而不关心 exists 的记录的具体字段,但是 sql 语法不允许 select 后面没有 内容,那就用个常量来 填充咯 |
21 zjgsamuel 2016-08-26 17:41:50 +08:00 LZ 有没有考虑以下除了把 SQL 写出来后 结合使用场景 同设计数据库的提些出于查询效率上的意见呢? |
22 qq316107934 2016-08-26 18:37:30 +08:00 via Android 做 V 家音乐库? |
23 javaluo 2016-08-27 07:42:24 +08:00 via Android select case when count(select idnumber from x where date - interval 7 days)>0 不过效率很低啊 数据分析还好,线上就不要这么干了 |
24 15115199878 2016-10-13 23:35:36 +08:00 @luckylion 很好, |