小编a_h*_*ame的帖子

使用PostgreSQL上的SQL连接数组中的多个行

我有一个像这样构造的表:

oid | identifier | value
1   | 10         | 101
2   | 10         | 102
3   | 20         | 201
4   | 20         | 202
5   | 20         | 203
Run Code Online (Sandbox Code Playgroud)

我想查询此表以获得如下结果:

identifier | values[]
10         | {101, 102}
20         | {201, 202, 203}
Run Code Online (Sandbox Code Playgroud)

我无法想办法做到这一点.那可能吗 ?怎么样 ?

非常感谢你.

sql postgresql

41
推荐指数
4
解决办法
4万
查看次数

具有多个SET和WHERE的SQL语句

我想知道这是否是一个有效的查询:

UPDATE  table
SET ID = 111111259

WHERE ID = 2555

AND SET ID = 111111261

WHERE ID = 2724

AND SET ID = 111111263

WHERE ID = 2021

AND SET ID = 111111264

WHERE ID = 2017
Run Code Online (Sandbox Code Playgroud)

sql db2

41
推荐指数
5
解决办法
10万
查看次数

如何找出在Oracle中创建特定表的时间?

在Oracle中,有没有办法找出特定表的创建时间?

同样,有没有办法找出插入/最后更新特定行的时间?

oracle database-metadata oracle11g

39
推荐指数
3
解决办法
14万
查看次数

为什么SQL Server会继续创建DF约束?

我正在尝试在SQL中创建升级和回退脚本.升级脚本添加如下列:

IF NOT EXISTS (SELECT * FROM sys.columns WHERE Name = N'ColumnName' 
    AND object_id = OBJECT_ID(N'[dbo].[TableName]'))

ALTER TABLE TableName
    ADD ColumnName bit NOT NULL DEFAULT(0) 
Run Code Online (Sandbox Code Playgroud)

回退脚本会删除列,如下所示:

IF EXISTS (SELECT * FROM sys.columns WHERE Name = N'ColumnName' 
    AND object_id = OBJECT_ID(N'[dbo].[TableName]'))

ALTER TABLE TableName
    DROP COLUMN ColumnName
Run Code Online (Sandbox Code Playgroud)

但是,回退脚本会抛出此错误:

Msg 5074, Level 16, State 1, Line 5
    The object 'DF__TableName__ColumnName__1BF3D5BD' is dependent on column 'ColumnName'.
Msg 4922, Level 16, State 9, Line 5
    ALTER TABLE DROP COLUMN ColumnName failed because one or …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

39
推荐指数
2
解决办法
4万
查看次数

Postgresql SQL GROUP BY时间间隔,任意精度(低至毫秒)

我将测量数据存储到以下结构中:

CREATE TABLE measurements(
measured_at TIMESTAMPTZ,
val INTEGER
);
Run Code Online (Sandbox Code Playgroud)

已经知道使用了

(一个) date_trunc('hour',measured_at)

(b)中 generate_series

我可以通过以下方式汇总我的数据:

microseconds,
milliseconds
.
.
.
Run Code Online (Sandbox Code Playgroud)

但是有可能将数据聚合5分钟,或者说是任意秒数吗?是否可以将测量数据聚合为任意秒数?

我需要通过不同时间分辨率聚合的数据将它们馈送到FFT或AR模型中,以便查看可能的季节性.

postgresql group-by

39
推荐指数
8
解决办法
2万
查看次数

检查表[pl/sql block]中是否存在行的正确方法

昨天我正在编写一些任务,让我感到震惊的是,当我使用pl/sql时,我并不知道检查表中是否存在行的正确和接受方式.

例如,让我们使用表格

PERSON(ID, Name); 
Run Code Online (Sandbox Code Playgroud)

显然我做不到(除非有一些秘密方法)类似于:

BEGIN 
  IF EXISTS SELECT id FROM person WHERE ID = 10; 
    -- do things when exists
  ELSE
    -- do things when doesn't exist
  END IF;
END;
Run Code Online (Sandbox Code Playgroud)

所以我解决它的标准方法是:

DECLARE
  tmp NUMBER;
BEGIN 
  SELECT id INTO tmp FROM person WHERE id = 10; 
  --do things when record exists
EXCEPTION
  WHEN no_data_found THEN
  --do things when record doesn't exist
END; 
Run Code Online (Sandbox Code Playgroud)

但是我不知道它是否被接受的方式,或者如果有更好的检查方法,如果有人可以与我分享他们的智慧,我真的会感到高兴:)

干杯.

sql oracle select plsql

39
推荐指数
3
解决办法
10万
查看次数

使用具有低基数的索引是否有意义?

我主要是一个Actionscript开发人员,绝不是SQL专家,但我不得不开发简单的服务器端.所以,我想我会在标题中向更有经验的人询问这个问题.

我的理解是,通过在一个包含很少不同值的列中设置索引,您不会获得太多收益.我有一个包含布尔值的列(实际上它是一个小的int,但我将它用作标志),并且此列用于我所拥有的大多数查询的WHERE子句中.在理论上的"平均"情况下,一半的记录值将为1而另一半为0.因此,在这种情况下,数据库引擎可以避免全表扫描,但无论如何都必须读取大量行(总行/ 2).

那么,我应该将此列作为索引吗?

为了记录,我正在使用Mysql 5,但是我更感兴趣的是一般的理由,为什么它有/无意义索引一个我知道将具有低基数的列.

提前致谢.

mysql sql indexing cardinality

38
推荐指数
3
解决办法
1万
查看次数

关于postgres中的聚簇索引

我正在使用psql访问postgres数据库.查看表的元数据时,有没有办法查看表的索引是否为聚簇索引?

我听说表的PRIMARY KEY自动与聚簇索引相关联,是真的吗?

postgresql clustered-index

38
推荐指数
6
解决办法
4万
查看次数

获取Postgres中表格的最后记录

我正在使用Postgres,无法获得我的表的最后一条记录:

 my_query = client.query("SELECT timestamp,value,card from my_table");
Run Code Online (Sandbox Code Playgroud)

如何知道时间戳是记录的唯一标识符?

sql postgresql

38
推荐指数
7
解决办法
11万
查看次数

错误java.sql.SQLException:ORA-00911:无效字符

我的代码有错误:

String sql = "CREATE USER ken IDENTIFIED BY 11;";

try {
    Class.forName("oracle.jdbc.OracleDriver");
    con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "system", "kenilyas");
    System.out.println("1111111111111");
    System.out.println("222222");
    pst = con.prepareStatement(sql);
    System.out.println("333333");
    try {
        System.out.println("333333");
        pst.execute();
        System.out.println("creating");
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
} catch (Exception e) {
    JOptionPane.showMessageDialog(null, e);
}
Run Code Online (Sandbox Code Playgroud)

sql oracle jdbc

38
推荐指数
2
解决办法
6万
查看次数