我试图加入2个表。表1仅包含在线用户的ID。表2包含所有用户及其姓名的ID。
我希望通过将表1与表2加在一起,然后显示名称来回显一下在线用户列表,但我的结果似乎不正确。
$result = mysql_query("SELECT * FROM online INNER JOIN base ON online.ID = base.id");
echo "<table>
<tr>
<th>Firstname</th>
</tr>";
while($row = mysql_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "</tr>";
}
echo "</table>";
回显的结果是显示在线表格中60个以上的大约15个成员。我不希望显示所有结果,但我确实希望能够以随机顺序显示它们(因此最低ID始终不是第一个)并且仅显示列表中的5个用户。这样我可以根据我网站的进一步发展选择显示的数量。
感谢所有帮助,谢谢:)
答案 0 :(得分:0)
有多种方法可以做你想做的事。最好的是混合方法,你可以通过限制mysql中的结果来获得尽可能多的项目。因此,对数据库的负载非常小(如果数据库逐渐增长)
使用DISTINCT的简单偏移方法
SELECT DISTINCT USER_ID, USER_NAME FROM online INNER JOIN base ON online.ID = base.id limit 5 OFFSET $value;
其中$ value根据您的逻辑而变化。您也可以使用limit关键字而不使用偏移量。
或
SELECT DISTINCT USER_ID, USER_NAME FROM online INNER JOIN base ON online.ID = base.id limit 5 OFFSET RAND();
RAND()也会为您提供所需的结果,除非它保留在结果总计数范围内。
使用按方法分组的偏移量
SELECT * FROM online INNER JOIN base ON online.ID = base.id GROUP BY UserName limit 5 OFFSET $value;