Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择支持日期中值最高的不同用户\u id,其中_Mysql_Sql Order By_Max_Distinct_Where - Fatal编程技术网

Mysql 选择支持日期中值最高的不同用户\u 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

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 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