Tag: postgresql

我怎样才能简化这个游戏统计查询?

这个代码按预期工作,但我很长,令人毛骨悚然。 select p.name, p.played, w.won, l.lost from (select users.name, count(games.name) as played from users inner join games on games.player_1_id = users.id where games.winner_id > 0 group by users.name union select users.name, count(games.name) as played from users inner join games on games.player_2_id = users.id where games.winner_id > 0 group by users.name) as p inner join (select […]

postgreSQL函数为最后插入的ID

我如何获得插入到表中的最后一个ID? 在MS SQL中有SCOPE_IDENTITY()。 请不要build议使用这样的东西: select max(id) from table

PostgreSQL:以分钟为单位运行查询的行数

我需要每分钟查询到那一刻的总计数。 我迄今为止所能达到的最好效果并不能解决问题。 它返回每分钟计数,而不是每分钟的总计数: SELECT COUNT(id) AS count , EXTRACT(hour from "when") AS hour , EXTRACT(minute from "when") AS minute FROM mytable GROUP BY hour, minute

ORDER BY IN值列表

我在PostgreSQL 8.3中有一个简单的SQL查询来抓取一堆评论。 我在WHERE子句中为IN构造提供了一个sorting的值列表: SELECT * FROM comments WHERE (comments.id IN (1,3,2,4)); 这个以任意顺序返回的评论,在我碰巧是1,2,3,4 。 我想要结果行像IN结构中的列表一样sorting: (1,3,2,4) 。 如何实现?

如何修改新的PostgreSQL JSON数据types中的字段?

使用postgresql 9.3我可以selectJSON数据types的特定字段,但是如何使用UPDATE修改它们呢? 我无法在postgresql文档或在线任何地方find这个例子。 我已经尝试了显而易见的: postgres=# create table test (data json); CREATE TABLE postgres=# insert into test (data) values ('{"a":1,"b":2}'); INSERT 0 1 postgres=# select data->'a' from test where data->>'b' = '2'; ?column? ———- 1 (1 row) postgres=# update test set data->'a' = to_json(5) where data->>'b' = '2'; ERROR: syntax error at or near "->" LINE […]

保持PostgreSQL有时select错误的查询计划

PostgreSQL性能的一个奇怪的问题,查询,使用PostgreSQL的8.4.9。 此查询是在3D卷内select一组点,使用LEFT OUTER JOIN添加相关的ID列,其中存在相关的ID。 x范围的小改动可以使PostgreSQLselect一个不同的查询计划,这个计划的执行时间从0.01秒到50秒。 这是问题的查询: SELECT treenode.id AS id, treenode.parent_id AS parentid, (treenode.location).x AS x, (treenode.location).y AS y, (treenode.location).z AS z, treenode.confidence AS confidence, treenode.user_id AS user_id, treenode.radius AS radius, ((treenode.location).z – 50) AS z_diff, treenode_class_instance.class_instance_id AS skeleton_id FROM treenode LEFT OUTER JOIN (treenode_class_instance INNER JOIN class_instance ON treenode_class_instance.class_instance_id = class_instance.id AND class_instance.class_id = […]

在应用LIMIT之前获取结果数量的最佳方法

当分页来自数据库的数据时,您需要知道将有多less页面来呈现页面跳转控件。 目前我通过运行查询两次,一旦包裹在一个count()来确定总的结果,第二次应用一个限制,以获取我需要的当前页面的结果。 这似乎效率低下。 有没有更好的方法来确定LIMIT应用之前会有多less结果返回? 我正在使用PHP和Postgres。

PostgreSQL支持“不区分变音”sorting规则吗?

在Microsoft SQL Server中,可以指定“不区分重音”的sorting规则(对于数据库,表或列),这意味着可能会执行类似查询 SELECT * FROM users WHERE name LIKE 'João' find一个与Joao名字。 我知道可以使用unaccent_string contrib函数从PostgreSQL中的string中删除重音,但是我想知道PostgreSQL是否支持这些“不区分变音”的sorting规则,所以上面的SELECT可以工作。

将PostgreSQL的PL / pgSQL输出保存为CSV文件

将PL / pgSQL输出从PostgreSQL数据库保存到CSV文件最简单的方法是什么? 我使用PostgreSQL 8.4与pgAdmin III和PSQL插件,我运行查询。

在JSON数组中查找元素的索引

我有一个如下所示的表格: CREATE TABLE tracks (id SERIAL, artists JSON); INSERT INTO tracks (id, artists) VALUES (1, '[{"name": "blink-182"}]'); INSERT INTO tracks (id, artists) VALUES (2, '[{"name": "The Dirty Heads"}, {"name": "Louis Richards"}]'); 还有其他几个与这个问题无关的列。 有一个理由把它们存储为JSON。 我想要做的是查找一个具有特定艺术家名字 (完全匹配)的曲目。 我正在使用这个查询: SELECT * FROM tracks WHERE 'ARTIST NAME' IN (SELECT value->>'name' FROM json_array_elements(artists)) 例如 SELECT * FROM tracks WHERE 'The […]