如何

2012-12-02 60 views
0
SELECT user_profile_data.* 
FROM relation_table,user_profile_data 
WHERE user_profile_data.ref_user_id=relation_table.user2 
and relation_table.type = 1 
AND relation_table.user1 = 184 
ORDER BY user_profile_data.full_name ASC 

我這裏顯示此查詢產生的結果表中的特定值後,過濾後的結果: - http://sqlfiddle.com/#!2/340f0/1如何

FULL_NAME LOCATION REF_USER_ID 
Fake  IN   181 
Fake gupta IN   185 
Fake kumar IN   182 
Fake sharma IN   183 
Fakeme IN    180 
Manish Kumawat US  192 

現在我想修改我的查詢,以獲得成果,這是後「假庫馬爾」有ID = 182這樣的: -

FULL_NAME LOCATION REF_USER_ID 

Fake sharma IN   183 
Fakeme IN    180 
Manish Kumawat US  192 

我不能使用user_profile_data.full_name>'Fake Kumar'因爲什麼我可以使用一些安全問題是ID,但如果我使用user_profile_data.ref_user_id>182我得到這樣的結果: -

FULL_NAME LOCATION REF_USER_ID 

Fake gupta IN   185 

Fake sharma IN   183 

Manish Kumawat US  192 

我應該使用什麼查詢得到預期的效果

+0

如果id不夠好,您要過濾的標準究竟是什麼? – ApplePie

回答

1
SELECT user_profile_data.* 
FROM  relation_table 
    JOIN user_profile_data 
     ON user_profile_data.ref_user_id = relation_table.user2 
WHERE relation_table.type = 1 
    AND relation_table.user1 = 184 
    AND user_profile_data.full_name > (
     SELECT full_name 
     FROM user_profile_data 
     WHERE REF_USER_ID = 182 
    ) 
ORDER BY user_profile_data.full_name 

看到它的sqlfiddle

+0

解決了這個問題是否有任何爲此建立的mysql函數。 – manish

+0

是:[子查詢](http://dev.mysql.com/doc/en/subqueries.html),如上所示。 – eggyal

0

如下用途LIMIT

 SELECT user_profile_data.* 
     FROM relation_table,user_profile_data 
     WHERE user_profile_data.ref_user_id=relation_table.user2 
      and relation_table.type = 1 
      AND relation_table.user1 = 184 
     ORDER BY user_profile_data.full_name ASC 
     LIMIT 3,3 
+0

不能使用LIMIT作爲所需的結果範圍未指定 – manish