我正在使用 Postgresql 9.0。我在表中有以下字段:id, name.
id name
1 John
1 Mary
1 Mary
1 Mary
1 John
1 Mary
3 Paul
3 Paul
3 George
. .
. .
Run Code Online (Sandbox Code Playgroud)
对于每个id,我想选择出现次数最多的名称。我怎样才能做到这一点?
我尝试使用以下查询,但它不起作用:
select id, max(name)
from table
group by id;
Run Code Online (Sandbox Code Playgroud) 我正在使用 PostgreSQL 9.4。
我有一个包含以下条目的表:
id | postcode | date_created
---+----------+-----------------
14 | al2 2qp | 2015-09-23 14:46:57
14 | al2 2qp | 2015-09-23 14:51:07
14 | sp2 8ag | 2015-09-23 14:56:11
14 | se4 | 2015-09-23 16:12:05
17 | e2 | 2015-09-23 16:15:35
17 | fk20 8ru | 2015-09-23 16:28:35
17 | fk20 8ru | 2015-09-23 16:35:51
17 | se2 | 2015-09-23 16:36:17
17 | fk20 8ru | 2015-09-23 16:36:22
17 | fk20 8ru | 2015-09-23 16:37:04
17 | se1 …Run Code Online (Sandbox Code Playgroud) 当我运行脚本时
DBCC CHECKIDENT ('table name', RESEED, 20000)
Run Code Online (Sandbox Code Playgroud)
消息的输出是
检查标识信息:当前标识值“200000”,当前
列值“200000”。DBCC 执行完成。如果 DBCC 打印错误
消息,请联系您的系统管理员。
当我通过运行查询身份值时
SELECT IDENT_CURRENT('table_name')
Run Code Online (Sandbox Code Playgroud)
它按预期显示为 200000,但是,当开发人员将记录插入表中时,它没有使用新的重新设定值。
有什么明显的我遗漏了吗?
我有一张PaymentInformation桌子
ID NAME Start End
1 Tina 1/7/2014 1/17/2014
2 Alice 3/7/2014 3/17/2014
3 John 5/7/2014 5/17/2014
4 Michelle 7/7/2014 7/17/2014
Run Code Online (Sandbox Code Playgroud)
我正在动态构建我的 SQL 查询,如下所示:
SQLiteDataBaseQueryHolder3 = "INSERT INTO " + SQLiteHelper.TABLE2_NAME + "(" +
"name, Start, End" +
")VALUES('" +
tempName + "'" +
",'" +start + "'" +
",'" + end + "" +
"')" +
" WHERE NOT EXISTS ( SELECT * FROM " +SQLiteHelper.TABLE2_NAME +" WHERE name = '"+
tempName+"' AND Start = '"+Start+"')"
Run Code Online (Sandbox Code Playgroud)
这给出了以下结果(为了可读性而格式化): …
我已经提供了 SQL Server 2014 的 RTM 版本,我需要应用最新的 SP(当前为 SP2)和 CU(当前为 CU8)。我需要先申请SP1吗?或者我可以直接迁移到 SQL Server 2014 SP2 CU8 而不应用旧的 Service Pack 1 和相关的累积更新吗?
我最近从 PostgreSQL 9.5 升级到 PostgreSQL 10。PostgreSQL 10 中的一个漂亮特性是新的标识列类型,它是 PostgreSQL串行伪类型的替代品。身份栏的官方文档可以在CREATE TABLE一页中找到。
但是,当将多行插入到带有GENERATED BY DEFAULT AS IDENTITY列的表中并使用关键字DEFAULT获取下一个 ID 值时,默认值返回为null.
例如,假设我有一张桌子
CREATE TABLE test (
id int GENERATED BY DEFAULT AS IDENTITY,
t text
);
CREATE TABLE
Run Code Online (Sandbox Code Playgroud)
使用DEFAULT关键字插入单行似乎工作正常。
INSERT INTO test (id, t) VALUES (DEFAULT, 'a');
INSERT 0 1
Run Code Online (Sandbox Code Playgroud)
插入多行不会。
INSERT INTO test (id, t) VALUES (DEFAULT, 'b'), (DEFAULT, 'c');
ERROR: null value in column "id" violates …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法对SELECTIN 中找到的每个匹配值进行查询。
考虑到下表包含IN运算符引用的每个值的 100 条记录,我希望每次匹配只返回 50条记录。
SELECT TOP (50) COLUMN
FROM TABLE
WHERE COLUMN IN (1,2,3)
Run Code Online (Sandbox Code Playgroud)
有没有一种有效的方法可以做到这一点?
我能想到的唯一方法是对每个值执行查询,IN考虑到实际查询从各种表中检索许多列,这将太慢。
我有一个 SQLite 数据库,其中有一个名为minecraft.
+----+----------------------+
| id | name |
+----+----------------------+
| 1 | Pocket Mine MP |
| 2 | Open Computers |
| 3 | hubot minecraft skin |
| 4 | Terasology |
| 5 | msm |
+----+----------------------+
Run Code Online (Sandbox Code Playgroud)
我需要找到所有在其“名称”字段中包含“e”和“o”的记录。这是我的选择查询:
select * from minecraft where name like '%e%o%'
Run Code Online (Sandbox Code Playgroud)
以下是上述查询的结果:
+----+----------------+
| id | name |
+----+----------------+
| 2 | Open Computers |
| 4 | Terasology |
+----+----------------+
Run Code Online (Sandbox Code Playgroud)
问题是 Like 谓词匹配整个值,而不是单词。不应该匹配 id = 2 的行,因为所有条件都没有出现在一个单词中('e' 出现在第一个单词中,'o' …
我从第一台服务器(运行 SQL Server 2014)备份了一个数据库。
当我尝试将备份恢复到第二台服务器(运行 SQL Server 2012)时,我收到以下警告消息:
警告消息 - 将进行源数据库的尾日志备份。查看选项页面上的设置。
如果我忽略此消息并尝试恢复,则会失败。
任何的想法 ?我该怎么办 ?
我有一个超过 4 亿行的表,想将其中一列的数据类型转换datetime为datetime2(2).
如果我执行我的语句,我会收到以下错误:
由于“ACTIVE_TRANSACTION”,数据库“xxxx”的事务日志已满
那么这里有没有可能更新这个表?
(我的日志文件的最大大小为 150GB,我没有更多可用空间。)
sql-server ×5
postgresql ×3
sqlite ×2
ddl ×1
distinct ×1
duplication ×1
identity ×1
insert ×1
like ×1
patching ×1
restore ×1
select ×1
service-pack ×1
t-sql ×1
update ×1