使用多个 SQL 语句在 PHP 中获取单个结果查询
Using multiple SQL Statements to get single result query in PHP
我想组建 2 个团队。经过研究,我发现我可以对我的 table 进行排序,然后在新的排序顺序中分配一个“排名”系统。现在,我试图只拉奇数行(在我计算出奇数之后是偶数)。
此语句将进行排序和排名:
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)) {}
长什么样?
如果您只想 select 来自 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'];
}
我想组建 2 个团队。经过研究,我发现我可以对我的 table 进行排序,然后在新的排序顺序中分配一个“排名”系统。现在,我试图只拉奇数行(在我计算出奇数之后是偶数)。
此语句将进行排序和排名:
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)) {}
长什么样?
如果您只想 select 来自 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'];
}