我试图从MySQL数据库中选择3个随机记录,其中lastUsedDate(记录上次更新的日期)超出设定的时间段或NULL。
我的逻辑是:
我知道 Rand()很慢,但此表只有30条记录。
SELECT * FROM myTable
WHERE lastUsedDate <= DATE_SUB(CURDATE() ,INTERVAL 7 DAY) OR lastUsedDate IS NULL
ORDER BY RAND()
LIMIT 3
最终,30天后,lastUsedDate将不再为NULL,因为所有30将用完。这就是为什么我想在7天后回收行。
有人指出我正确的方向吗?
答案 0 :(得分:0)
尝试
SELECT * FROM myTable
WHERE IFNULL(lastUsedDate, '0000-00-00') <= DATE_SUB(CURDATE() ,INTERVAL 7 DAY)
ORDER BY RAND()
LIMIT 3
因为你把它标记为PHP我猜你在PHP中运行这个查询,在这种情况下为什么不简化查询并在php中做更多
$date_limit = date("Y-m-d", strtotime("-7 days", time()));
$sql = "SELECT * FROM myTable WHERE IFNULL(lastUsedDate, '0000-00-00') <= '$date_limit' ORDER BY RAND() LIMIT 3";
祝你好运