通过选择数量显示内部联接的结果

时间:2014-06-02 17:28:27

标签: php mysql row inner-join

我试图加入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个用户。这样我可以根据我网站的进一步发展选择显示的数量。

感谢所有帮助,谢谢:)

1 个答案:

答案 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;