我有一个像
这样的查询SELECT *
FROM `mytable`
WHERE
(`status` LIKE 'active%' OR `status` LIKE 'featured%')
AND `views` < `tviews`
AND `id` > 4
ORDER BY RAND()
LIMIT 1;
现在,如果没有与该查询匹配的行,我希望它返回id
= 2
这是怎么做到的。注意我希望整行位于id = 2
聚苯乙烯。使用RAND()确实如果表只包含最多100行,只是mysql的新功能,除非必要,否则不想做任何事情
并非它不是一个重复的问题,我阅读的另一个问题和它不一样。返回一个默认值,如“Peter”或0,我希望它返回一个完整的ROW而不是一个值!所以感谢报道并阻止我提问
答案 0 :(得分:0)
你应该摆脱你对兰德()的使用。那就是说......
$sql ="SELECT *
FROM `mytable`
WHERE
(`status` LIKE 'active%' OR `status` LIKE 'featured%')
AND `views` < `tviews`
AND `id` > 4
ORDER BY RAND()
LIMIT 1";
$stmt = $conn->query($sql);
if(!$data = $stmt->fetch(PDO::FETCH_ASSOC))
{
$sql ="SELECT *
FROM `mytable`
WHERE
(`status` LIKE 'active%' OR `status` LIKE 'featured%')
AND `views` < `tviews`
AND `id`=2";
$stmt = $conn->query($sql);
$data = $stmt->fetch(PDO::FETCH_ASSOC);
}