从上图这张表里,找到每一条记录的前七天之内有没有同一人的记录
然后生成这张表,请问 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 很好,
|