首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从MySql到PostgreSql

从MySql到PostgreSql
EN

Stack Overflow用户
提问于 2015-06-30 19:38:13
回答 1查看 64关注 0票数 0

我将这段代码从MySql迁移到PostgreSql

代码语言:javascript
运行
复制
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?

提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-05 10:37:04

我认为您的查询是不正确的,因为您在GROUP BY子句中包含了"data“,同时还试图查找min(data)。本质上,您将得到的不是最小值,而是相同的数据。我是说,如果你有这样的争吵

代码语言:javascript
运行
复制
1 '10.07.2015' 'sdfg' 24
1 '10.07.2015' 'sdfg' 24
1 '10.07.2015' 'sdfg' 24
1 '11.07.2015' 'sdfg' 24

然后你会得到

代码语言:javascript
运行
复制
'10.07.2015' 'sdfg' '10.07.2015' 1 24
'11.07.2015' 'sdfg' '11.07.2015' 1 24

作为查询的结果。如果您想真正找到min(数据),那么您应该考虑将“数据”从组中删除。或者你的目的是什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31147006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档