第一张记录未显示UNION ALL

时间:2017-05-27 14:22:09

标签: php mysql

我有以下问题。

我有一个使用UNION ALL的MySQL查询:

def getAge(d):
  salary = list(d.values())[0]['age']
  return salary



#d.values() => dict_values([{'age': 30, 'salary': 600000}])
#list(d.values()) => [{'age': 30, 'salary': 600000}]
#list(d.values())[0] => {'age': 30, 'salary': 600000}
##list(d.values())[0]['age'] => 30
print(sorted(myList,key=getAge))

奇怪的是,结果的第一行没有出现。 所有其他人都没问题。 当我在PHPMyAdmin中运行相同的查询时,它正常工作......

我真的不明白为什么它没有显示出来。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这不太可能是查询的问题。但我们不能完全排除LIKE比较和字符差异的问题。我们不能排除为绑定参数提供的值的问题,

我们只是在猜测。但对观察到的行为最可能的解释是代码获取第一行,然后对其执行任何操作,然后获取下一行。我们可以使用如下代码模式重现报告的行为:

  $sth->execute();

  $row = $sth->fetch();
  // do nothing with the row we just fetched

  while( $row = $sth->fetch() ) {
     // fetch another row and output it 
  }

这种模式可以解释为什么我们不“获得”第一行。 (我们实际得到了行,我们只是忽略它,然后获取下一行。

其他想法:

如果没有ORDER BY子句,数据库可以按任何顺序返回行。那么一次执行的“第一”行可能是后续执行中的第三行或最后一行。

如果问题是特定的行(值)未被返回,除了报告的“缺少第一行”,这可能是由于WHERE子句中的条件,查询的方式被评估。但是这个问题不仅会影响一个“第一”行。