2012-01-04 94 views
0

是否有任何noticable問題與此查詢? Rand()可以用於連接嗎?MySQL查詢問題

$sql_result = mysql_query(" 
    SELECT p.name as propname, p.city, p.id, m.name, m.overall_XP 
    FROM properties p INNER JOIN mobsters m ON p.owner = m.id 
    WHERE p.owner != '$id' AND m.level > '100' 
    AND m.gang != '$gang_id' ORDER BY RAND() LIMIT 0, 1", $db); 
+0

考慮將它放在CodeReview([codereview.stackexchange.com](http://codereview.stackexchange.com/))上。 – Tadeck 2012-01-04 17:59:08

+2

應該是在MySQL中使用**'ORDER BY RAND()注意'**往往是一個非常糟糕的主意......這裏的[關於這個問題的文章(http://www.paperplanes.de/2008 /4/24/mysql_nonos_order_by_rand.html)。 – rdlowrey 2012-01-04 18:00:51

回答

0

你應該嘗試呼應的mysql_query:

echo "SELECT p.name as propname, p.city, p.id, m.name, m.overall_XP FROM properties p INNER JOIN mobsters m ON p.owner = m.id WHERE p.owner != '$id' AND m.level > '100' AND m.gang != '$gang_id' ORDER BY RAND() LIMIT 0, 1"; 
exit; 

然後將其粘貼到phpMyAdmin的,看看是否有任何問題/錯誤。

0

我覺得你的問題是符合邏輯的,它在你的查詢事業的結構我看不出有什麼錯。你確定你使用了正確的連接字段,或者你在不限制你的結果不正確?

2

你試過嗎?你會發現你得到,所以如果你喜歡張貼問題的最佳答案「這是我的查詢Y和我得到錯誤十,我在做什麼了?」

但是在回答你的問題時,很多人建議不要在MySQL中像這樣使用RAND(),因爲MySQL所做的就是將隨機數應用於結果集中的每一行。隨着結果越來越大,它可能會很快開始消耗你的表現。我們有一個解決方法(你可以在PHP中實現)here

+0

對於rand()性能爲+1 – 2012-01-04 18:08:07