2016-02-14 59 views
1

我有一個SQL語句,在這裏我想獲得最低的若干意見廣告數最少選擇廣告:與意見

SELECT * FROM ads WHERE type='crossPromo' AND city='$city' AND views= (SELECT MIN(views) FROM ads) AND expire >= '$today' LIMIT 1"; 

一旦選擇一個廣告,它通過增加的觀點列一。

這一切都完美。一旦。這似乎在所有廣告== 1也不會只選擇一個隨機的廣告,或者第一個廣告,但不返回任何東西。

有什麼辦法得到它時,他們都是平等的返回一個補充的嗎?

+0

就像在你的查詢'$ city'看到的東西是非常令人擔憂的。你確定你正在擺脫這個價值嗎? – tadman

回答

6

我認爲你可以使用order bylimit

select a.* 
from ads 
where type = 'crosspromo' and city = '$city' and expire >= '$today' 
order by views 
limit 1; 

與您查詢的問題是,它是最小的超過子查詢返回所有廣告。但是,最低限度可能無法滿足其他條件,因此不會返回任何內容。

+0

你的意思是,如果在數據庫中有兩個相同的值,然後'MIN()'不能選擇他們並沒有返回? – Shafizadeh

+0

@Shafizadeh。 。 。不,這不是我的意思。我的意思是,所有廣告的最低限度可能不在您關心的城市。 –