php 怎样使PostgreSQL 数据库里的数据全部变为零,归零。

php 怎样使PostgreSQL 数据库里的数据全部变为零,归零。,第1张

什么教数据全部归0

我们假设数据库中有三张表。

a,b,c,每个表有几个字段,也有很多数据,

那么你的问题到底是如下哪种

1:删除掉该数据库中的所有表,a,b,c

2:把所有表的数据都清空,表结构保留

3:把表中所有的数据都变为整形数值0?

补充1:

如果你是3的问题的话,实现起来比较繁琐,并且我也不是很理解为什么要这样做,感觉挺没什么意义的,如果方便的话可以告诉我你的目的是什么,为什么要把所有的数据都变成0,或许可以换些办法

补充2:

听你的描述你可能是只有一个表,表中有很多的字段,每个字段都代表一个投票项目,而表中的数据记录,其实只有一条?

你可以通过pg_num_fields获得字段数量,在通过pg_field_name获得字段名称,依次运行update

$dbconn = pg_connect("host=localhost")

$res = pg_query($dbconn, "select * from your_talbe_name")

$i = pg_num_fields($res)

for ($j = 0$j <$i$j++) {

$fieldname = pg_field_name($res, $j)

pg_query($dbconn, "update your_talbe_name set $fieldname=0")

}

另外,我个人认为你这样实现投票的管理不是很好,投票项目一多很难管理,建议

create table xxx

(

id serial primary key,

name text,

num int

)

把投票项目的名字也就是你原来列的名称放到name字段中,num则为投票数,这样以后再有这种问题,一个update xxx set num=0就OK了,管理起来也方便些。

两种办法

[1]在命令行用dropdb命令删除

dropdb -U postgres demodb,就可以实现数据库的删除

[2]在psql命令行下删除

psql#DROP DATABASE demodb

执行就可以删除。

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

[sql] 

select * from people  

where peopleId in (select  peopleId  from  people  group  by  peopleId  having  count(peopleId) > 1)  

 

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

[sql] 

delete from people   

where peopleId  in (select  peopleId  from people  group  by  peopleId   having  count(peopleId) > 1)  

and rowid not in (select min(rowid) from  people  group by peopleId  having count(peopleId )>1)  

 

3、查找表中多余的重复记录(多个字段) 

[sql] 

select * from vitae a  

where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count(*) > 1)  

 

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

[sql] 

delete from vitae a  

where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)  

and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)  

 

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

[sql] 

select * from vitae a  

where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)  

and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9625573.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存