跳过第一个重复值并获取第二个值-PHP
PHP和MYSQLi 我试图获得以下输出:对于项目ID(PJ006) 我首先将“日期”列按降序排列,然后我想跳过第一个值的所有重复值(跳过EM207的所有条目),并显示即时第二个值(预期输出:EM206)。此输出是针对项目ID(PJ006)的 预期输出:对于项目ID:PJ006跳过第一个重复值并获取第二个值-PHP,php,mysqli,Php,Mysqli,PHP和MYSQLi 我试图获得以下输出:对于项目ID(PJ006) 我首先将“日期”列按降序排列,然后我想跳过第一个值的所有重复值(跳过EM207的所有条目),并显示即时第二个值(预期输出:EM206)。此输出是针对项目ID(PJ006)的 预期输出:对于项目ID:PJ006 Badge ID: EM206 PHP代码:使用第一个徽章ID(EM207),获取项目ID PJ006的数据并显示 $mysqli=mysqli_connect('serverIP','username','passw
Badge ID: EM206
PHP代码:使用第一个徽章ID(EM207),获取项目ID PJ006的数据并显示
$mysqli=mysqli_connect('serverIP','username','password','databasename');
//This data i passed by Ajax
$someID = trim($_POST["storedValue"]);
//This query puts the date column in Desending Order
$query2 ="SELECT * FROM scores1 WHERE ProjectID='$someID' order by ScoreDate desc limit 1";
$result = mysqli_query($mysqli,$query2)or die(mysqli_error());
$num_row = mysqli_num_rows($result);
while($row=mysqli_fetch_array($result))
{
//the output is displayed here
echo $row[1];
}
上述代码中需要进行哪些修改以跳过第一个值的所有重复值(跳过EM207的所有条目)并显示立即的第二个值(预期输出:EM206)。。这个输出是针对项目ID(PJ006)的需要的。好的,如前所述,您实际上想要的是某个特定项目的最新徽章ID——这是第二个条目这一事实有点模糊,在其他情况下可能不成立 我将使用子查询查找每个项目的最新条目:
select
badgeId,
projectId
from
scores1,
(
select
max(date) as max,
projectId
from
scores1
group by
projectId
) as sub
where
scores1.date = sub.max
and scores1.projectId = sub.projectId
然后,您可以为您感兴趣的任何项目id添加检查。不要忘记添加一些索引以获得更好的性能。好的,如前所述,您实际上想要的是某个特定项目的最新徽章id-这是第二个条目这一事实有点让人费解,在其他情况下可能不成立 我将使用子查询查找每个项目的最新条目:
select
badgeId,
projectId
from
scores1,
(
select
max(date) as max,
projectId
from
scores1
group by
projectId
) as sub
where
scores1.date = sub.max
and scores1.projectId = sub.projectId
然后,您可以为您感兴趣的任何项目id添加检查。别忘了添加一些索引以提高性能。在这个回答中,我感谢Thamaraiselvam先生帮助我获得了确切的所需输出。谢谢你 有效的解决方案是:
$mysqli=mysqli_connect('serverIP','username','password','databasename');
$query2 ="SELECT * FROM scores1 where ProjectID='12345' ORDER BY ScoreDate DESC";
$result = mysqli_query($mysqli,$query2)or die(mysqli_error());
$num_row = mysqli_num_rows($result);
$badgeid=0; $proid=0 ; $date=0;
$flag=0;
while($row=mysqli_fetch_array($result))
{
if($badgeid!=$row['BadgeID'] || $proid!=$row['ProjectID'] ){
if($flag==2){
echo "$badgeid and $date<br>";
}
$flag++;
$badgeid =$row['BadgeID'];
$proid =$row['ProjectID'];
$date =$row['ScoreDate'];
}
}
?>
$mysqli=mysqli_connect('serverIP','username','password','databasename');
$query2=“从scores1中选择*,其中PROJECTD='12345'按ScoreDate DESC排序”;
$result=mysqli_query($mysqli,$query2)或die(mysqli_error());
$num_row=mysqli_num_rows($result);
$badgeid=0$proid=0$日期=0;
$flag=0;
while($row=mysqli\u fetch\u数组($result))
{
如果($badgeid!=$row['badgeid']| |$proid!=$row['ProjectID'])){
如果($flag==2){
回显“$badgeid和$date
”;
}
$flag++;
$badgeid=$row['badgeid'];
$proid=$row['projectd'];
$date=$row['ScoreDate'];
}
}
?>
在这个回答中,我感谢Thamaraiselvam先生帮助我完成了确切的所需输出。谢谢你
有效的解决方案是:
$mysqli=mysqli_connect('serverIP','username','password','databasename');
$query2 ="SELECT * FROM scores1 where ProjectID='12345' ORDER BY ScoreDate DESC";
$result = mysqli_query($mysqli,$query2)or die(mysqli_error());
$num_row = mysqli_num_rows($result);
$badgeid=0; $proid=0 ; $date=0;
$flag=0;
while($row=mysqli_fetch_array($result))
{
if($badgeid!=$row['BadgeID'] || $proid!=$row['ProjectID'] ){
if($flag==2){
echo "$badgeid and $date<br>";
}
$flag++;
$badgeid =$row['BadgeID'];
$proid =$row['ProjectID'];
$date =$row['ScoreDate'];
}
}
?>
$mysqli=mysqli_connect('serverIP','username','password','databasename');
$query2=“从scores1中选择*,其中PROJECTD='12345'按ScoreDate DESC排序”;
$result=mysqli_query($mysqli,$query2)或die(mysqli_error());
$num_row=mysqli_num_rows($result);
$badgeid=0$proid=0$日期=0;
$flag=0;
while($row=mysqli\u fetch\u数组($result))
{
如果($badgeid!=$row['badgeid']| |$proid!=$row['ProjectID'])){
如果($flag==2){
回显“$badgeid和$date
”;
}
$flag++;
$badgeid=$row['badgeid'];
$proid=$row['projectd'];
$date=$row['ScoreDate'];
}
}
?>
您可以在mysqlCan中使用NOT IN操作符。您可以在PHP中提出一些建议,因为该值每天都在变化。我需要选择跳过第一个值的第二个值(以及在降序时重复的所有条目)从tbl中选择DISTINCT badgeId代码>当您要求跳过所有EM207
行时,您要寻找的逻辑规则是什么?是否要跳过某个值?如果是这样,您可以只使用WHERE-badgeid'EM207'
,因为徽章ID不断变化,所以我不能在代码中使用值。。所以逻辑是,我更关注项目id PJ006,当我降序时,我需要跳过第一个条目的所有行。。所以我跳过第1行到第4行,然后根据项目ID PJ006从第6行输出EM206的值。您可以在mysqlCan中使用NOT IN操作符。您可以在PHP中提出一些建议,因为这个值每天都在变化。我需要选择跳过第一个值的第二个值(以及在降序时重复的所有条目)从tbl中选择DISTINCT badgeId代码>当您要求跳过所有EM207
行时,您要寻找的逻辑规则是什么?是否要跳过某个值?如果是这样,您可以只使用WHERE-badgeid'EM207'
,因为徽章ID不断变化,所以我不能在代码中使用值。。所以逻辑是,我更关注项目id PJ006,当我降序时,我需要跳过第一个条目的所有行。。所以我跳过第1行到第4行,然后根据项目ID PJ006从第6行输出EM206的值,我可以使用它,但即使在使用Distinct之后,PHP代码也应该选择第2个值。。。我的php代码应该是什么?我想这段代码会得到不重复的u行,所以当然你可以在EM207之后得到EM206,这与我的代码中已有的相同。。你能建议如何根据PHPThamaraiselvam中的项目ID PJ006选择第二个唯一的徽章ID吗?在你的代码中,你能指出选择第二个值的确切值吗?明白了吗??Happy Codeing buddyI可以使用这个,但即使在我使用Distinct之后,PHP代码也应该选择第二个值。。。我的php代码应该是什么?我想这段代码会得到不重复的u行,所以当然你可以在EM207之后得到EM206,这与我的代码中已有的相同。。您能建议如何根据PHPTHAMARISELVAM中的项目ID PJ006选择第二个唯一的徽章ID吗?在您的代码中,您能指出e吗