Mysql 选择支持日期中值最高的不同用户\u id,其中
tb_支持者: 作为查询的结果,它应该输出每个唯一用户id的最高支持日期 我的实际查询:Mysql 选择支持日期中值最高的不同用户\u id,其中,mysql,sql-order-by,max,distinct,where,Mysql,Sql Order By,Max,Distinct,Where,tb_支持者: 作为查询的结果,它应该输出每个唯一用户id的最高支持日期 我的实际查询: "SELECT DISTINCT(user_id), support_date FROM tb_supporters WHERE support_date < " . (time() - 60*60*24*7) 我查询中的WHERE子句用于将支持日期在过去7天范围内的用户ID排除在外 重要注意事项:这7天范围内的现有用户ID我根本不想被选中,即使他们的支持日期最高。示例表 CREATE Tabl
"SELECT DISTINCT(user_id), support_date
FROM tb_supporters WHERE
support_date < " . (time() - 60*60*24*7)
我查询中的WHERE子句用于将支持日期在过去7天范围内的用户ID排除在外
重要注意事项:这7天范围内的现有用户ID我根本不想被选中,即使他们的支持日期最高。示例表
CREATE Table table_sample(id INT, date INT);
一些插页
INSERT INTO table_sample VALUES(1,1301283373);
INSERT INTO table_sample VALUES(2,1301283743);
INSERT INTO table_sample VALUES(3,1301799207);
INSERT INTO table_sample VALUES(1,1403862904);
INSERT INTO table_sample VALUES(2,1405174895);
INSERT INTO table_sample VALUES(3,1415266390);
SELECT * FROM table_sample;
+------+------------+
| id | date |
+------+------------+
| 1 | 1301283373 |
| 2 | 1301283743 |
| 3 | 1301799207 |
| 1 | 1403862904 |
| 2 | 1405174895 |
| 3 | 1415266390 |
+------+------------+
6 rows in set (0.00 sec)
Your query
SELECT id,MAX(date) FROM table_sample GROUP BY id;
+------------+------+
| id |MAX(date) |
+------------+------+
| 1 | 1403862904 |
| 2 | 1405174895 |
| 3 | 1415266390 |
+------------+------+
3 rows in set (0.00 sec)
若要查找日期在过去7天的范围内,可以执行以下操作
SELECT id,MAX(date) FROM table_sample WHERE date <= (UNIX_TIMESTAMP() - (60 * 60 * 24 * 7)) GROUP BY id;
+------+------------+
| id | MAX(date) |
+------+------------+
| 1 | 1403862904 |
| 2 | 1405174895 |
| 3 | 1415266390 |
+------+------------+
3 rows in set (0.00 sec)
从表中选择id,MAX(date),其中date尝试如下操作:
SELECT user_id,max(support_date) as support_date
FROM mytable
GROUP BY user_id
ORDER BY support_date DESC
按id从tb_支持者组中选择id、最大(日期) 您还可以对unix时间戳使用默认MySQL函数
SELECT
user_id, MAX(support_date)
FROM
tb_supporters
WHERE
support_date < (UNIX_TIMESTAMP() - (60 * 60 * 24 * 7))
GROUP BY user_id
选择
用户id,最大值(支持日期)
从…起
tb_支持者
哪里
支持日期<(UNIX时间戳()-(60*60*24*7))
按用户id分组
我的查询中的WHERE子句是将
支持日期在过去7天的范围内
您可以这样重新表述:
我的查询中的WHERE子句是选择用户ID最高的位置
支持日期在过去7天的范围之外
您可以将分组依据
和MAX
与HAVING
子句一起使用:
选择用户id,MAX(支持日期)
来自tb_支持者
按用户id分组
最大值(支持日期)
请注意,您不能为此使用WHERE
子句,因为它将在过去7天内消除行WHERE用户支持;不是组您尝试过这种方法吗从表中按用户id按用户id顺序按用户id选择用户id,max(支持日期)作为支持日期
?您的答案是最接近的,但是我仍然得到WHERE子句中的用户id。有什么想法吗?您可以在(1,2)
或user\u id=3
中添加where条件,如user\u id,这样就可以了。另外,如果您需要过去七天的范围,您可以使用此条件:support\u date介于(UNIX\u TIMESTAMP()-(60*60*24*7))和UNIX\u TIMESTAMP()之间。
请查看我更新的问题好吗?我需要7天范围内的所有用户id,但根本没有列出。仅应选择外部数据您想要的数据不是过去7天的数据吗?您的7天范围从当前日期开始?我需要7天以上的数据,但不需要7天内的用户id。请查看我更新的问题好吗?我需要7天范围内的所有用户id,但根本没有列出。仅应选择那些超出其关于WHERE子句的最高支持日期的用户id
SELECT user_id,max(support_date) as support_date
FROM mytable
GROUP BY user_id
ORDER BY support_date DESC
SELECT
user_id, MAX(support_date)
FROM
tb_supporters
WHERE
support_date < (UNIX_TIMESTAMP() - (60 * 60 * 24 * 7))
GROUP BY user_id