我将这段代码从MySql迁移到PostgreSql
function f_nome($e_tipo, $db_table)
{
$thisyear = date('Y');
$db = pg_connect("host=localhost port=5432 dbname=**** user=yyyyy");
$result = pg_query($db,"SELECT MIN(data) AS earliest, nome, data, saldo, id
FROM $db_table
WHERE tipo = '$e_tipo' AND year ='$thisyear'
GROUP BY nome, data, saldo, id
ORDER BY earliest");
$row_cnt = pg_num_rows($result);
while ($row = pg_fetch_array($result))
{$z_nome=$row['nome'];
echo "<option>$z_nome</option>";}
pg_close($db);
return $z_nome;
}
在MySql中,我获得了我需要的东西($row_cnt = 12
),而在Postgres,我得到了相同结果的多次倍。
在要阅读的DB i newad中,有活动项和已停止项。每周都会更新活动项。我想阅读最后的活动更新项目,然后用另一个脚本,我创建一些图表和统计。
我如何解决我的问题与PG?
提前谢谢你
发布于 2015-08-05 10:37:04
我认为您的查询是不正确的,因为您在GROUP BY子句中包含了"data“,同时还试图查找min(data)。本质上,您将得到的不是最小值,而是相同的数据。我是说,如果你有这样的争吵
1 '10.07.2015' 'sdfg' 24
1 '10.07.2015' 'sdfg' 24
1 '10.07.2015' 'sdfg' 24
1 '11.07.2015' 'sdfg' 24
然后你会得到
'10.07.2015' 'sdfg' '10.07.2015' 1 24
'11.07.2015' 'sdfg' '11.07.2015' 1 24
作为查询的结果。如果您想真正找到min(数据),那么您应该考虑将“数据”从组中删除。或者你的目的是什么?
https://stackoverflow.com/questions/31147006
复制相似问题