我有一个大约25个colums的表XX。我只需要其中4个。MySQL:在日期范围内提取2到10之间的ID
我想提取其中ID发生一次以上行 - 我想我可以用计数做到这一点(X) -
表看起来像
+------+------++------+------++------+------++------+------++------+------+
ID Date T1 T2 T3 .....
+------+------++------+------++------+------++------+------++------+------+
1 2016-01-01 1212 13412 121212
2 2016-01-01 1214 12541 121241
1 2016-01-01 1212 13412 121212
2 2016-01-01 1214 12541 121241
4 2016-01-01 1214 66666 121241
2 2016-01-01 1214 98889 121241
1 2015-01-01 1213 13412 121212
2 2016-01-01 1214 66666 121241
2 2016-01-02 1214 66666 121241
3 2016-01-01 1214 66666 121241
+------+------++------+------++------+------++------+------++------+------+
结果应该看起来像这
+------+------++------+------++------+------++------+------++------+------+
ID Date T1 T2 T3 .....
+------+------++------+------++------+------++------+------++------+------+
1 2016-01-01 1212 13412 121212
2 2016-01-01 1214 12541 121241
2 2016-01-01 1214 12541 121241
2 2016-01-01 1214 98889 121241
2 2016-01-01 1214 66666 121241
2 2016-01-02 1214 66666 121241
+------+------++------+------++------+------++------+------++------+------+
正如你所看到的,结果包含不同的时间日期间与计数> 1的ID(> 2016年1月1日,< NOW)。
我想我的选择与此查询
SELECT
id, id_date, T1, T2, T3
FROM XY
WHERE id IN (
SELECT id
FROM XY
GROUP BY id
HAVING count(*) > 1
) AND date > '2016-01-01'
GROUP BY id, id_date, T1, T2, T3
结果是从其他的方法,我做了不同的。我首先创建一个临时表下面的查询
SELECT id, id_date, T1, T2, T3 FROM XY
WHERE id_date > '2016-01-01'
GROUP BY id, id_date, T1, T2, T3
然后,我把一个ID我的临时表的时间并与其他方法即将结果。他们是不同的。
长话短说:
我怎样才能在特定日期范围之间提取2至10之间的发生标识出一个表吗?我的团队中是否有错误?
'SELECT * FROM(UR#1 Query)WHERE count> 1 and Count <11 Group by'? – KikiTheOne
你的主要关键是什么?在你的查询中哪里是“2和10”标准? – Strawberry
'在2和10之间有计数(*) - 就像你在问题中所说的那样。 – Barmar