mysql - 在 support_date WHERE 中选择最高值的 DISTINCT user_id

标签 mysql sql-order-by max distinct where-clause

tb_supporters:

user_id          support_date
-----------------------------
   1              1301283373
   2              1301283743
   3              1301799207
   1              1403862904
   2              1405174895
   3              1415266390

作为查询的结果,它应该输出每个唯一 user_id 的最高 support_date。

我的实际查询:

"SELECT DISTINCT(user_id), support_date
 FROM tb_supporters WHERE
 support_date < " . (time() - 60*60*24*7)

但是,它不会选择 user_id 旁边最高的 support_date。 尝试了 MAX(support_date)GROUP BY user_idORDER BY support_date DESC,但没有任何帮助,它仍然只选择最低的 support_date。

能否请您引导我进入正确的方向,如何完成此任务以仅选择每个 user_id 旁边的最高 support_date?

结果应该是:

user_id          support_date
-----------------------------
   1              1403862904
   2              1405174895
   3              1415266390

我查询中的 WHERE 子句是为了排除 user_ids,其中 support_date 在过去 7 天的范围内。

重要说明:我根本不想选择这 7 天范围内的现有 user_id,即使他们的支持日期最长也是如此。

最佳答案

The WHERE clause in my query is to keep out user_ids where the support_date is inside a range of the past 7 days.

你可以改写成这样:

The WHERE clause in my query is to select user_ids where highest support_date is outside a range of the past 7 days.

您可以将 GROUP BYMAXHAVING 子句一起使用:

SELECT user_id, MAX(support_date)
FROM tb_supporters
GROUP BY user_id
HAVING MAX(support_date) < UNIX_TIMESTAMP(CURRENT_TIMESTAMP - INTERVAL 7 DAY)

请注意,您不能为此使用 WHERE 子句,因为它会消除用户支持在过去 7 天内的;不是

关于mysql - 在 support_date WHERE 中选择最高值的 DISTINCT user_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29007559/

相关文章:

mysql - Mysql中Group By和Order By的使用

python - 从由 "#"分隔的行值中提取最小值和最大值

php - 选择最近 7 天内上传的数据

mysql - Perl XML::Smart 内存不足!错误

SQL 查询按公司和产品获取最新发票的平均价格

java - 使用 Java 8 lambda 表达式,按内部列表的属性过滤对象列表

mysql - 选择多列但仅按 1 列分组

php - 使用 php 将 MySql 查询滚动到下一列。

mysql - 加入条件出错

mysql - 如何根据 sales_order_id 汇总所有价格(MySQL)