php - 从 mysql 表中选择 3 行,然后获取每一行的特定列

标签 php mysql

  1. 从表 1 中选择 3 行
  2. 从每一行中获取特定列的数据。
  3. 然后利用得到的每一列数据,再次查询得到table2的数据。
  4. 将第 4 步中获得的数据存储到每一行的变量中。
  5. 然后将它们放入 json 数组中(表 1,3 行 + 表 2 的数据(每个)。

我正在构建一个排名表,它显示前 3 名用户及其排名名称。 例如: User1 有 2000 积分,用户 2 有 4000 积分,用户 3 有 10k 积分,所以前 3 名用户是: 用户 3 > 用户 2 > 用户 1

所以,我希望 php 转到“用户”表并使用此获取前 3 名成员:

$query = mysql_query("SELECT * FROM users ORDER BY pts DESC LIMIT 3");
$rows = array();
while($r = mysql_fetch_assoc($query)) {
   $rows[] = $r;
}

用户”的表结构:
1.用户名(varchar)
2.pts(整数)

将行放入数组后,如何为该数组中的每一行获取“点数”。 然后转到“rank”表以获取他们的ranknames

排名”的表结构:
1.rank(varchar)
2.pts(整数)

rank 表中有 'pts' 让 php 根据数组每一行的点来选择比较用户处于哪个排名。

通常情况下,如果它仅适用于 1 个用户,我会使用它,但对于多个用户,我不确定:

$result = mysql_query("SELECT * FROM rank WHERE pts <= '$upts' ORDER BY pts DESC LIMIT 1")
              or die(mysql_error()); 

然后在获得前 3 名用户的排名后,php 现在会将排名添加到该数组中的每个用户(行)(当然,将其添加到排名所有者,而不仅仅是简单地将其放入)。

然后JSON编码出来。

我该怎么做?

最佳答案

我不确定这是否是您想要的。那就是将两个查询组合成一个查询。请看http://sqlfiddle.com/#!2/ad419/8

SELECT user.username,user.pts,rank.rank 
FROM user LEFT JOIN rank 
ON user.pts <=rank.pts group by user.id

更新:

提取top 3,可按如下方式进行;

SELECT user.username,user.pts,rank.rank 
FROM user LEFT JOIN rank 
ON user.pts <=rank.pts 
GROUP BY user.id 
ORDER BY pts DESC LIMIT 3

关于php - 从 mysql 表中选择 3 行,然后获取每一行的特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11340177/

相关文章:

mysql - 使用 "IF"时程序无法正常工作

mysql 重复插入和更新

php - WordPress 在 functions.php 中添加简码

javascript - 如何检查php数组值是否在js数组中?

javascript - 模态表单不使用 jquery 提交

php - 拉维尔 |仅在范围内覆盖默认 DB::connection 一次

php - 如何正确地将 DOMDocument->ReplaceChild 与 DOMDocument->getElementById 结合使用?

php - 提高 mysql 速度?

PHPMYADMIN 调整编辑器高度大小

php - 对(非对象)中的非对象调用成员函数prepare()