我有一个sql语句,我试图获得视图数量最少的广告:
SELECT * FROM ads WHERE type='crossPromo' AND city='$city' AND views= ( SELECT MIN(views) FROM ads ) AND expire >= '$today' LIMIT 1";
选择广告后,会将“视图”列增加一个。
一切都很完美。一旦。似乎所有广告== 1,它不仅会选择随机广告或第一个广告,而且不会返回任何内容。
当它们全部相等时,有没有办法让它返回一个添加?
答案 0 :(得分:6)
我认为您可以使用order by
和limit
:
select a.*
from ads
where type = 'crosspromo' and city = '$city' and expire >= '$today'
order by views
limit 1;
您的查询存在的问题是它在子查询中返回所有广告的最小值。但是,该最低限度可能不满足其他条件,因此不会返回任何内容。