AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[sqlite](dba)

Martin Hope
Alex
Asked: 2025-03-24 21:29:43 +0800 CST

Sqlite 计数同时也分组吗?

  • 5
select * from tblA a 
 left join tblB b on b.id = a.bId 
   group by a.bId 

如果我根据列进行分组,则只会获得具有相同bID值的记录中的第一个记录。有没有办法也可以获取每行具有相同值的记录总数bId?无需进行单独的查询...

id | bId
--------
1  |  1
2  |  1
3  |  1
4  |  2
5  |  3


so in the above query I would expect

id | bId. | counts
-------------------
1  |  1  |  3   <- 3 records with bId = 1
4  |  2  |  1
5  |  3  |  1
sqlite
  • 1 个回答
  • 28 Views
Martin Hope
Alex
Asked: 2025-02-13 21:10:09 +0800 CST

当数据库有其他读取者时,Sqlite 事务未释放

  • 6

如果我有多个数据库读取器,它们基本上是以“读取”模式打开数据库文件的 Sqlite 实例,那么对于以“创建”模式打开数据库的单个写入器来说,在所有读取器关闭数据库之前无法释放事务,这正常吗?

我试图弄清楚这是 sqlite 的正常行为,还是我正在使用的特定 sqlite 库的错误/限制。

我不明白为什么作者需要等待读者停止使用数据库文件,这对我来说没有意义,因为读者无法更改数据

sqlite
  • 3 个回答
  • 39 Views
Martin Hope
user209974
Asked: 2025-02-02 01:38:05 +0800 CST

这怎么会是 sqlite3 的一个特性呢?外键关系出错了

  • 15

以下面的代码为例:

pragma foreign_keys = ON;

create table people(people_id integer primary key, name text not null);
insert into people (name) values ("Mom"), ("Jack the Ripper");

create table family_member(people_id integer primary key references people(people_id));

insert into family_member values ((select people_id from people where name = "Mom"));
insert into family_member values ((select people_id from people where name = "Dad"));  -- silent error here

select name from family_member inner join people using (people_id);
-- Jack the Ripper is part of the family

这在 sqlite 中怎么会是合法的?甚至没有发出警告。这是出于好的理由,还是出于遗留原因,文档中是否有我尚未找到的内容?对我来说,这令人担忧,我相信没有其他 SQL DB 会这样做。

sqlite
  • 1 个回答
  • 1842 Views
Martin Hope
Jez
Asked: 2024-12-01 07:43:36 +0800 CST

如何将虚拟 FTS 表链接到 SQLite 中的另一个表并强制引用完整性?

  • 5

我一直在阅读 SQLite 中的全文搜索文档,这一切都是有道理的,只是似乎没有为实际能够将 FTS 行与其他表中的行链接起来做出任何调整。我猜我不想将所有实体的列都放入我的 FTS 表中,因为我无法为其指定数据类型(或 STRICT),并且我不需要为 FTS 索引所有数据。所以我想使用 FK 关系从我的主实体表到其 FTS 表进行 1:1 链接,如下所示:

CREATE VIRTUAL TABLE usersFTS USING fts4(
    keywords,
    nicknames
);

-- Create the users table with an explicit foreign key reference to usersFTS
CREATE TABLE users(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT NOT NULL UNIQUE,
    usersFTS_id INTEGER NOT NULL,
    FOREIGN KEY (usersFTS_id) REFERENCES usersFTS (rowid)
);

-- ... then:

-- Insert into usersFTS and capture the generated rowid for Alice's meta
INSERT INTO usersFTS (keywords, nicknames) VALUES ('software developer linux open-source', 'Ally Alice');

-- Capture the generated rowid for Alice
SELECT last_insert_rowid();  -- Assume it returns 1

-- Insert into users using the captured rowid
INSERT INTO users (name, email, usersFTS_id) VALUES ('Alice', '[email protected]', 1);

-- ... so that:

SELECT usr.id, usr.name, usr.email, fts.keywords, fts.nicknames
FROM usersFTS fts
INNER JOIN users usr ON usr.usersFTS_id = fts.rowid
WHERE fts.keywords MATCH '"software developer"';

但这失败于以下INSERT声明:

SQL 逻辑错误:外键不匹配 - “users”引用“usersFTS”

似乎虚拟表不能在正常的 FK 关系中引用其 rowid。那么,如何将我的全文搜索表中的一行链接到另一个包含该实体更多数据的表中的一行?有没有办法在 SQLite 中做到这一点并保持引用完整性?

sqlite
  • 1 个回答
  • 22 Views
Martin Hope
VansFannel
Asked: 2024-06-29 17:16:48 +0800 CST

按照我使用 Sqlite3 插入的顺序返回数据

  • 4

我想我正在使用最新版本的 Sqlite 和 C++。我有一张包含数据的表,我需要按照插入顺序返回这些数据。

我是否可以保证这些列始终会按照此顺序返回?

在此处输入图片描述

也许我必须添加另一列来设置顺序并使用 ORDER BY:

在此处输入图片描述

sqlite
  • 1 个回答
  • 17 Views
Martin Hope
thewolf
Asked: 2024-05-26 21:27:54 +0800 CST

我需要从 sqlite 迁移到分布式设置。我有什么选择?

  • 5

我有一个 sqlite db,它已经增长到 30gb,而且我每天仍在向它推送数据。我有几个服务使用 libsqlite3 向它写入数据。很快它就会变得太大而无法在本地保存。对我来说,迁移到分布式设置的最佳方法是什么?我能想到的一种方法是 sshfs,但如果我的机器处于离线状态,它将不起作用。一个解决方案是将我最近使用的数据库部分缓存在本地,并将其余部分保存在其他地方,这将是完美的。大多数时候,我会使用最近推送的数据。我可以开始存档多年前的数据,但访问它需要手动操作。

sqlite
  • 1 个回答
  • 50 Views
Martin Hope
av4625
Asked: 2024-02-27 02:23:54 +0800 CST

SQLite 中类似数组的结构的最佳数据类型是什么?

  • 5

我有一个存储磁道的表,我想为每个磁道添加扇区时间。每个磁道可以具有不同数量的扇区,同一磁道将始终具有相同数量的扇区,并且某些磁道不能存在扇区时间。

检索数据时,我也希望获得给定磁道的每个扇区的最低扇区时间。

我能想到的最好的想法是拥有一个带有sector1, sector2, ... 等的 json 对象。这没问题,但它需要检索数据的代码来了解其扇区数SELECT,如下例所示。这意味着还需要存储“扇区数”。

CREATE TABLE test (track TEXT NOT NULL, sectors TEXT);
INSERT INTO test (track, sectors) VALUES ('track1', json_object('sector1', 10, 'sector2', 11, 'sector3', 12));
INSERT INTO test (track, sectors) VALUES ('track1', json_object('sector1', 11, 'sector2', 9, 'sector3', 12));
INSERT INTO test (track, sectors) VALUES ('track1', json_object('sector1', 10, 'sector2', 9, 'sector3', 12));
INSERT INTO test (track, sectors) VALUES ('track1', json_object('sector1', 12, 'sector2', 12, 'sector3', 4));
INSERT INTO test (track, sectors) VALUES ('track2', json_object('sector1', 12, 'sector2', 12, 'sector3', 3, 'sector4', 1));
INSERT INTO test (track) VALUES ('track1');
select * from test;
select min(DISTINCT json_extract(sectors, '$.sector1')), min(DISTINCT json_extract(sectors, '$.sector2')), min(DISTINCT json_extract(sectors, '$.sector3')) from test where track = 'track1';

是否有更好的方法来存储这样的数据并能够SELECT像我上面所说的那样?

sqlite
  • 1 个回答
  • 31 Views
Martin Hope
Tom Huntington
Asked: 2024-02-10 16:33:30 +0800 CST

停止 sqlite 重置主键自动增量

  • 5

如果删除表末尾的行,自动增量将重置:

sqlite> CREATE TABLE my_table (
    id INTEGER PRIMARY KEY
);
...
sqlite> SELECT * FROM my_table;
1
2
3
sqlite> DELETE FROM my_table WHERE id = 3;
sqlite> SELECT * FROM my_table;
1
2
sqlite> INSERT INTO my_table DEFAULT VALUES;
sqlite> SELECT * FROM my_table;
1
2
3

我想要返回最后一个命令

1
2
4

这可能吗?

sqlite
  • 1 个回答
  • 26 Views
Martin Hope
mvorisek
Asked: 2023-10-27 21:14:15 +0800 CST

相同操作数类型的 Sqlite 比较行为不同

  • 7

基于Sqlite文档: https: //www.sqlite.org/datatype3.html#type_conversions_prior_to_comparison,特别是这个声明:

如果一个操作数具有 INTEGER、REAL 或 NUMERIC 关联性,而另一操作数具有 TEXT 或 BLOB 或无关联性,则 NUMERIC 关联性将应用于另一操作数。

我期望以下查询:

CREATE TABLE `invoice` (
  `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  `amount` DOUBLE PRECISION DEFAULT NULL
);

insert into `invoice` (`amount`) values (4.0);
insert into `invoice` (`amount`) values (15.0);
insert into `invoice` (`amount`) values (4.0);

select *,
    typeof(amount), amount = '4',
    typeof(sum(amount)), sum(amount) = '4', sum(amount) = '4.0', sum(amount) = 4
from invoice
group by id;

sum(amount) = '4'为每行返回相同的结果,amount = '4'因为两个操作数类型在每次比较中都具有相同的类型(使用typeof(), for non进行验证SUM(),比较是否按预期工作)。

演示:http://sqlfiddle.com/#!5/59238/2

sqlite
  • 2 个回答
  • 108 Views
Martin Hope
FranS
Asked: 2023-10-02 19:40:53 +0800 CST

列接受的字符多于定义的字符

  • 5

我有一列定义为字符变化(20)。但它接受超过 20 个字符。我已经搜索过,但找不到任何相关信息(也许我搜索错了)。有没有人遇到过这个问题并知道原因和/或修复方法?

sqlite
  • 1 个回答
  • 34 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve