标签: row

SQL Server 中的“记录”和“行”有什么区别?

有一个关于在 SQL Server添加日期和时间的无关紧要的问题引发了一场相当引人入胜的分类辩论。

那么我们如何区分这些相关术语以及如何正确使用它们呢?

记录

sql-server terminology row record

62
推荐指数
8
解决办法
3万
查看次数

选择 json_agg 中的列

我有一个查询,如:

SELECT a.id, a.name, json_agg(b.*) as "item"
  FROM a
  JOIN b ON b.item_id = a.id
 GROUP BY a.id, a.name;
Run Code Online (Sandbox Code Playgroud)

如何选择在列b,所以我没有b.item_id在JSON对象?

我读过关于ROW,但它返回一个 JSON 对象,如:

{"f1": "Foo", "f2": "Bar"}
Run Code Online (Sandbox Code Playgroud)

一旦获取它以匹配正确的列键,我将需要重新映射 JSON 对象。我想避免这种情况并保留原始列名。

postgresql group-by row json

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

Postgres 多列到 json

我正在运行 postgresql 9.3.4。我有一个包含 3 个字段的表:

id   name  addr
---  ----  ----
1    n1    ad1
2    n2    ad2
...
Run Code Online (Sandbox Code Playgroud)

我需要将数据移动到包含以下字段的新表:

id   data
---  ----
1    {'name': 'n1', 'addr': 'ad1'}
2    {'name': 'n2', 'addr': 'ad2'}
...
Run Code Online (Sandbox Code Playgroud)

row_to_json对我来说不是解决方案,因为它也SELECT t.id, row_to_json(t) as data FROM (select id, name, addr from myt) t增加id了结果。有没有办法在我的数据字段中选择我需要的字段(名称和地址)?

postgresql row json

33
推荐指数
2
解决办法
5万
查看次数

如何将表中的最大行数限制为 1

我的 SQL Server 数据库中有一个配置表,该表应该只有一行。为了帮助未来的开发人员理解这一点,我想防止添加多于一行的数据。我选择为此使用触发器,如下所示......

ALTER TRIGGER OnlyOneConfigRow
    ON [dbo].[Configuration]
    INSTEAD OF INSERT
AS
BEGIN
    DECLARE @HasZeroRows BIT;
    SELECT  @HasZeroRows = CASE
        WHEN COUNT (Id) = 0 THEN 1
        ELSE 0
    END
    FROM
        [dbo].[Configuration];

    IF EXISTS(SELECT [Id] FROM inserted) AND @HasZeroRows = 0
    BEGIN
        RAISERROR ('You should not add more than one row into the config table. ', 16, 1)    
    END
END
Run Code Online (Sandbox Code Playgroud)

这不会引发错误,但不允许第一行进入。

还有比这更有效/更自我解释的方法可以将可以插入表中的行数限制为 1 吗?我是否缺少任何内置的 SQL Server 功能?

trigger sql-server insert limits row

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

根据先前和实际行值计算行值

大家好,感谢您的帮助。
我有以下情况:一个名为 statements 的表,其中包含字段id (int)、stmnt_date (date)、debit (double)、credit (double) 和balance (double) 我的表的结构

我想按照以下规则计算余额:

第一行余额(按时间顺序)= 借方 - 贷方,其余行

当前行余额 = 按时间顺序前一行余额 + 当前行借方 - 当前行贷方

正如您在上面的图片中看到的,行不是按日期排列的,这就是为什么我按时间顺序使用这个词两次来强调 stmnt_date 值的重要性。

非常感谢您的帮助。

mysql row

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

从别名创建较小的行并保留列名

使用 Postgres:

SELECT users."name" AS "name"
    , array_to_json(array_agg(sites)) as sites
FROM remodel.users AS users
JOIN remodel.user_sites AS user_sites
    ON users.id=user_sites.user
JOIN remodel.sites AS sites
    ON sites.id=user_sites.site
GROUP BY "users".id
;
Run Code Online (Sandbox Code Playgroud)

目前生产

SELECT users."name" AS "name"
    , array_to_json(array_agg(sites)) as sites
FROM remodel.users AS users
JOIN remodel.user_sites AS user_sites
    ON users.id=user_sites.user
JOIN remodel.sites AS sites
    ON sites.id=user_sites.site
GROUP BY "users".id
;
Run Code Online (Sandbox Code Playgroud)

但是我不想在 JSON 输出中有“id”字段。

将站点选择更改为

array_to_json(array_agg(row(sites."name", sites.created))) as sites
Run Code Online (Sandbox Code Playgroud)

导致字段失去名称

"Toby";"[{"id":1,"name":"Village","created":"2015-08-10T15:22:36.622298"},
         {"id":2,"name":"Manor","created":"2015-08-10T15:22:43.614551"}]"
"Amy";"[{"id":3,"name":"Park","created":"2015-08-10T15:22:48.810872"}]"
"Anne";"[{"id":2,"name":"Manor","created":"2015-08-10T15:22:43.614551"},
         {"id":1,"name":"Village","created":"2015-08-10T15:22:36.622298"},
         {"id":3,"name":"Park","created":"2015-08-10T15:22:48.810872"}]"
Run Code Online (Sandbox Code Playgroud)

并尝试(这将是一个可怕的)子选择

, array_to_json(array_agg((SELECT "name", created FROM …
Run Code Online (Sandbox Code Playgroud)

postgresql aggregate row

7
推荐指数
2
解决办法
363
查看次数

如果存在,则增加行中的值,否则创建带值的行?

下面是我正在使用的 MySQL 表布局。基本上,我想增加浏览量、观察者和查询,因为它们通过网站的前端发生。我的问题是如何在第一次访问 ID: 1106 或 1107 时使用 MySQL 插入创建一个新的 _views 行?

ID 键值
----- ----- ------
1104 _reserve 10000
1104 _views 100
第 1104 章
1104 _inquiries 1
1105 _reserve 1500
1106 _reserve 24000
第 1106 章
1107 _reserve 45300

mysql insert if-not-exists row

6
推荐指数
1
解决办法
8549
查看次数

Oracle ROWID,我们可以假设它在仅插入场景中是顺序的吗?

ROWID仅插入表时假设顺序或升序有多安全?为什么?

我遇到过一种情况,我必须验证是否将新记录添加到没有用作参考的序列或日期列的表中。我发现ROWID最近添加的记录高于所有相关记录。因此我假设它们比参考记录更旧。然而,环顾网络,似乎有一些关于ROWID,有些甚至声称这ROWID甚至不能保证是恒定的!

我知道依赖ROWIDfor 顺序可能不是一个好主意,但这让我思考:在使用语句和仅插入时ROWID,关于值的顺序和变化提供了什么保证DELETE。oracle 有没有详细说明这些要点的官方文档?另外,ROWID在表级别或数据库级别是唯一的吗?

oracle sequence row

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

使用类型代替列定义列表?

运行下面的命令,我得到“返回“记录”的函数需要一个列定义列表

SELECT *
FROM json_to_record('{"a":1,"b":2,"c":3,"d":4}');
ERROR:  a column definition list is required for functions returning "record"
LINE 1: SELECT * FROM json_to_record('{"a":1,"b":2,"c":3,"d":4}');
Run Code Online (Sandbox Code Playgroud)

没关系。我知道它想要什么。

SELECT *
FROM json_to_record('{"a":1,"b":2,"c":3,"d":4}')
  AS (a int, b int, c int, d int);
Run Code Online (Sandbox Code Playgroud)

此外,在 PostgreSQL 中,所有表都已经有一个以相同名称创建的类型。

CREATE TABLE foo(a,b,c,d)
  AS VALUES
    (1,2,3,4);
Run Code Online (Sandbox Code Playgroud)

这将创建一个foo链接到新创建的 table的内部类型foo。不过,我可以很容易地创建一个类似的类型bar

CREATE TYPE bar AS (a int, b int, c int, d int);
Run Code Online (Sandbox Code Playgroud)

能够将返回的记录转换json_to_record()为 bar会很棒。

SELECT *
FROM json_to_record('{"a":1,"b":2,"c":3,"d":4}')
  AS foo; -- bar? anything? …
Run Code Online (Sandbox Code Playgroud)

postgresql datatypes row composite-types

5
推荐指数
1
解决办法
1173
查看次数

SQLite3 - 删除多列的重复项

我正在寻找最有效的方法来从表中删除重复项,其中 id 是唯一的,但当您检查其他列时有相同的行。

例子:

id   name   age   x
1   peter   25    II
2   peter   25    II
Run Code Online (Sandbox Code Playgroud)

该表有数万行。

sqlite duplication row

4
推荐指数
1
解决办法
6370
查看次数