首页 > 解决方案 > 在 PHP 中使用多个 SQL 语句获取单个结果查询

问题描述

我正在寻找创建 2 个团队。经过研究,我发现我可以对我的表进行排序,然后以新的排序顺序分配一个“排名”系统。现在,我试图只提取奇数行(以及在我找出奇数之后的偶数)。

该语句将进行排序和排名:

SELECT t.*, @rownum := @rownum + 1 AS weight FROM golfers t, (SELECT @rownum := 0) r WHERE trip_name_table_ID = 1 ORDER BY golfer_handicap

请参阅SQLfiddle以获得视觉效果。

所以我weight在排序后创建。现在,我想weight用我发现的用于拉奇数行的代码从该列中拉出我的数据(现在应该拉奇数的加权排序):

SELECT * FROM golfers WHERE weight IN(SELECT weight FROM golfers WHERE weight%2 <> 0);

weight既然是一AS列,我该如何使用这两个语句?我 while($rowid = mysqli_fetch_array($result)) {} 会是什么样子?

标签: phpmysqlmysqli

解决方案


如果您只想从 SQL 查询中选择奇数行,那么您应该使用weight%2=1

完整的查询应如下所示:

SELECT * FROM (
    SELECT t.*, @rownum := @rownum + 1 AS weight 
    FROM golfers t, (SELECT @rownum := 0) r 
    WHERE trip_name_table_ID = 1 
    ORDER BY golfer_handicap
) as t1 
WHERE weight%2=0

我不知道您为什么使用while($rowid = mysqli_fetch_array($result)) {},但您的 mysqli 结果将包含您的查询返回的确切数据。不过,您可以改用foreach

foreach($result as $row) {
    echo $row['golfer_name'];
    echo $row['weight'];
}

推荐阅读