2011-04-28 56 views
0

所以我想要的是把用戶沒有個人資料圖片在頁面的非常非常底部。MYSQL把用戶的底部沒有個人資料圖片,但其他人仍然由其他ORDER屬性

,但如果他們有一個畫面,然後它會跳過它們,並將它們添加到下面的規則

SELECT users.id as id, users.username as username,  
     DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(userprofiles.birthdate)), '%Y')+0 AS age, 
     userprofiles.defaultpictureid as picture, city.City 
    FROM users, 
     userprofiles, 
     Cities as city 
WHERE users.id = userprofiles.userid 
    AND city.CityId = userprofiles.city 
    AND userprofiles.online = '1' 
    AND userprofiles.country = ".$this->country." 
    AND userprofiles.state = ".$this->state." 
ORDER BY if (userprofiles.city = ".$this->city.",0,1) AND userprofiles.membertype DESC 

回答

0

也許我誤讀的問題,因爲你已經有了一個IForder by裏面的概念但是這應該在假設defaultpictureid爲空時用戶沒有圖片時起作用

.... 
ORDER BY 
    if(userprofiles.defaultpictureid is null,1,0), 
    if (userprofiles.city = ".$this->city.",0,1) 
.... 

某些DB沒有這樣的IF語句。在那些沒有他們通常具備的情況下(MySQL有兩個)

ORDER BY 
    CASE WHEN userprofiles.defaultpictureid is null THEN 1 ELSE 0 END, 

這也是有用的,當你擁有的不僅僅是1和0更多的價值,你不想嵌套IFS

+1

做我認爲在ORDER BY中使用AND也可能是一個問題。 – 2011-04-28 09:24:29

+0

如果我沒有弄錯,MySQL應該允許你這樣做:'ORDER BY userprofiles.defaultpictureid爲空,...(其他條件)'。 – 2011-04-28 11:38:20

相關問題