php – MYSQL:最接近按user_id分组的提供日期
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – MYSQL:最接近按user_id分组的提供日期,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2415字,纯文字阅读大概需要4分钟。
内容图文
![php – MYSQL:最接近按user_id分组的提供日期](/upload/InfoBanner/zyjiaocheng/907/72de99618c374634b08e08d92218b6ae.jpg)
我需要获取多行,其中date_added最接近但未超过用户提供的日期,按user_id分组.
我已经看了一堆最大的组类型答案,但我不是那里:
Get nearest records to specific date grouped by type
SQL Query to show nearest date?
Find closest datetime to specified datetime in mysql query
Get closest date from MySQL table
https://dev.mysql.com/doc/refman/5.0/en/example-maximum-column-group-row.html
这是关闭:https://stackoverflow.com/a/17038667/5319244.找到最大日期,我需要用户输入指定的最大值,而不是最大值.
这是具有正确的organisation_id,framework_id和level_id已经过滤的数据的子集.
+----+---------+-----------------+--------------+----------+---------------------+
| id | user_id | organisation_id | framework_id | level_id | date_added |
+----+---------+-----------------+--------------+----------+---------------------+
| 2 | 1 | 2 | 1 | 1 | 2015-07-31 14:02:49 |
| 9 | 2 | 2 | 1 | 1 | 2015-09-01 11:05:09 |
| 11 | 1 | 2 | 1 | 1 | 2015-09-07 14:13:39 |
+----+---------+-----------------+--------------+----------+---------------------+
如果提供的日期是2015-09-07.我希望看到id:9和11.
如果提供的日期是2015-09-01.我希望看到id:2和9.
如果提供的日期是2015-07-31.我希望看到id:2.
这个查询和我一样接近:
SELECT t1.id
, t1.user_id
, t1.date_added
FROM
completed_frameworks AS t1
WHERE date_added = (
SELECT
MAX(date_added)
FROM
completed_frameworks
WHERE
user_id = t1.user_id
AND
date_added <= '2015-09-07 23:59:59'
)
AND
(
t1.organisation_id = 2
AND
t1.framework_id = 1
AND
t1.level_id = 1
)
它返回我对该日期的期望:2015-09-07
当日期是2015-09-01但是它只返回id 9.不是2,正如我所期望的那样.
当日期是2015-07-31时,它返回0行..
如果我能提供其他任何内容,请告诉我.
干杯!
编辑:
感谢迄今为止的回复.我需要澄清两点:
1)我没有限制.由于用户ID,我期待这些行.可能有n个用户返回.我只想为每个用户提供一行,其中date_added最接近用户提供的日期.
2)提供的日期没有时间值.它将来自一个简单的datepicker UI.在我的示例查询中,我添加了23:59:59的时间来包含当天的所有内容.
解决方法:
请尝试使用此子查询.将organisation_id / framework_id / level_id过滤器移动到子查询中,它现在返回您给出的示例的正确值.
SELECT t1.id, t1.user_id, t1.date_added
FROM
completed_frameworks AS t1
WHERE date_added = (
SELECT
MAX(date_added)
FROM
completed_frameworks
WHERE
user_id = t1.user_id
AND
date_added <= '2015-09-01 23:59:59'
AND
organisation_id = 2
AND
framework_id = 1
AND
level_id = 1
)
内容总结
以上是互联网集市为您收集整理的php – MYSQL:最接近按user_id分组的提供日期全部内容,希望文章能够帮你解决php – MYSQL:最接近按user_id分组的提供日期所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。