如果result为null,则选择MySql数据的最有效方法

时间:2015-05-28 10:41:00

标签: php mysql select isnull

我想问一下,基于某些过滤器从两个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年05月28日当天上午1​​0点,我想提取从现在到3小时前发生的访问,如果结果是零(并且是),我想查询以降序日期顺序返回最后几次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 个答案:

答案 0 :(得分:-1)

$hours = 3;


$query = mysql_query("SELECT * FROM user, access
    WHERE access.iduser = user.id
    AND < DATE_SUB(NOW(), INTERVAL '$hours' HOUR) LIMIT 3");

如果没有结果,请每次将$ hours增加1并重新运行查询,直到获得结果。