2012-01-04 133 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