【发布时间】:2015-05-28 10:40:59
【问题描述】:
我会问什么是基于某些过滤器从两个mysql表中提取数据的最佳和最强大的方法,如果结果为null,则无条件提取数据?
table user
ID NAME SURNAME
1 nick smith
2 john davis
3 mattew miller
4 roger wilson
5 karl taylor
6 july moore
7 michael white
8 genny lopez
table access
ID IDUSER LASTACCESS
1 1 2015-05-27 08:10:15
2 5 2015-05-27 08:25:23
3 4 2015-05-27 09:15:24
4 7 2015-05-27 09:28:24
5 7 2015-05-27 23:02:05
6 1 2015-05-28 01:10:55
7 2 2015-05-28 02:11:20
8 3 2015-05-28 04:15:49
假设现在是 2015 年 5 月 28 日上午 10:00,我想提取从现在到三个小时前发生的访问,如果结果为零(并且是)我想要查询按日期降序返回最后 3 次访问。谢谢
==============================更新================= ===============
我试试这个:
SELECT * FROM access
WHERE access.iduser = user.id
AND < DATE_SUB(NOW(), INTERVAL 3 HOUR)
OR user.id = ANY ( SELECT * FROM access ORDER BY lastaccess DESC )
GROUP BY user.id ORDER BY lastaccess DESC
我会直接从 MySQL 获取结果而不使用 PHP
【问题讨论】:
-
如果您提供一些选项,我们可以告诉您哪个更好。或者,如果您实际上只是想要问题的解决方案,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 DDL(和/或 sqlfiddle),以便我们可以更轻松复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。