gpt4 book ai didi

php - 如何使用选择查询一次获取所有两个数组值

转载 作者:行者123 更新时间:2023-11-30 01:21:13 26 4
gpt4 key购买 nike

我想获取最新时间的姓名和对应的分数。所以我尝试了:

    $queryObj = mysql_query("SELECT `Name`,`Score` from `Table`.`Score` where `Date` = (    SELECT max(`Date`)    from `Table`.`Score`) and `Name`<>'' "); 

然后通过以下方式从中获取值(value):

  while( $obj = mysql_fetch_object( $queryObj ) )  {
$data = array();
$data['Name'] = $obj->Name;
$data['Score'] = $obj->Score;
$searches[] = $data;
}

但是当我打印时:

    print_r(array_values($searches));

数组中缺少第一个值,因此这不是正确的方法。我也尝试过:

    $row = mysql_fetch_assoc($queryObj);
for ($i = 0; $i <3; $i++)
print( $row['Name'][$i]." Score: ".$row['Score'][$i]."<br />\n");

但它也不会给我正确的结果。如何从该查询中获取值? (查询正确,我测试过)。有人有建议吗?

编辑:我在此处添加示例数据:

Name   Score      Date
abc 3 2013-08-29 10:11:47
abc 2 2013-08-29 09:39:23
abc 1 2013-08-28 10:22:28
jane 2 2013-08-29 09:39:23
2013-08-29 10:08:36
jane 1 2013-08-29 10:11:47
tarzan 1 2013-08-29 10:11:47

注意:是的,有一些空白值。

我的预期结果是:

abc score 3
jane score 1
tarzan score 1

最佳答案

好的,在您更新问题并提供您期望的内容后,您的查询应如下所示:

SELECT t1.Name, t1.Score 
FROM Table.Score t1
INNER JOIN
(
SELECT max(Date) MaxDate, Name, Score
FROM Table.Score
WHERE Name <> ''
GROUP BY Name
) t2
ON t1.Name = t2.Name AND t1.Date = t2.MaxDate

这将为您提供每个NameScoreNameScore对code> 基于他最新的日期(每个Name 1 行)。

因此,在这一行中将您的原始查询替换为我的查询:

$queryObj = mysql_query(" ... "); 

然后:

$rows = array();

while($row = mysql_fetch_assoc($queryObj)) {
$rows[$row['Name']] = $row['Score'];
}

您可以按照您在上一条评论中想要的方式很好地foreach它:

foreach($rows as $name => $score) {
echo $name . ' - ' . $score . "\n";
}

关于php - 如何使用选择查询一次获取所有两个数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18509105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com