查询返回3行的相同数据

时间:2017-02-08 18:42:50

标签: php mysql json

我获得了第1,第2和第3的相同值。然后下一行给出了应该在第一行中假设的第二列中的结果。

<?php  
 require "db.php"; 
 $sql = "select n_name, shortcut, IF(rank = 1>2, 2, shortcut) AS 1st, IF(rank = 1<2, shortcut, shortcut) AS 2nd, 
 IF(rank = 3=3, 1, shortcut) as 3rd from team inner join nonsport on team.n_id = nonsport.n_id";                         

 $con = mysqli_connect($server_name,$mysql_user,$mysql_pass,$db_name); 

$result = mysqli_query($con,$sql);


 $response = array();

while($row=mysqli_fetch_array($result))
{
array_push($response, array("n_name"=>$row[0],"1st"=>$row[1], 
"2nd"=>$row[2], "3rd"=>$row[3]));

} 
echo json_encode (array("nresults"=>$response));



mysqli_close($con);

?>

我的预期输出是

实施例。快捷方式有a,b,c,它们的等级a = 1 b = 2 c = 3;

然后1st = a,2nd = b,3rd = c;

我得到的是什么

1st = a,2nd = a,3rd = a;

然后下一行显示

1st = b,2nd = b,3rd = b;

1 个答案:

答案 0 :(得分:1)

IF(rank = 1 > 2, 2, shortcut)

它解决如下:

  • 如果rank等于1,则rank = 1为1,否则为0
  • 0或1可以大于2吗?没有。
  • 因此,rank = 1 > 2始终解析为false,IF的输出将是口渴参数,即快捷方式。
IF(rank = 1 < 2, shortcut, shortcut)

这一个总是返回快捷方式,因为第二个和第三个参数都是快捷方式。

IF(rank = 3 = 3, 1, shortcut)

在此,

  • 如果排名为3,则rank = 3为1,否则为0.
  • rank = 3(输出0或1)可以等于3吗?没有。
  • 因此,rank = 3 = 3总是返回false,因此输出始终是第3个参数,即快捷方式。

因此为什么这三个函数都返回相同的值。

关于您的预期输出,请编辑您的问题,根据它添加样本数据和预期输出以及逻辑的完整说明。

相关问题