小编And*_*y M的帖子

在按另一个字段分组时,如何正确选择字符串的最大出现次数?

我正在使用 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 postgresql-9.0

7
推荐指数
1
解决办法
6613
查看次数

获取每个 ID 的最后 5 个不同值

我正在使用 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)

postgresql greatest-n-per-group distinct

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

DBCC CHECKIDENT('表名',RESEED,20000)不工作

当我运行脚本时

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,但是,当开发人员将记录插入表中时,它没有使用新的重新设定值。

有什么明显的我遗漏了吗?

sql-server t-sql

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

仅当记录不存在时如何插入记录?

我有一张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)

这给出了以下结果(为了可读性而格式化): …

sqlite insert duplication

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

应用最新的 Service Pack 和累积更新

我已经提供了 SQL Server 2014 的 RTM 版本,我需要应用最新的 SP(当前为 SP2)和 CU(当前为 CU8)。我需要先申请SP1吗?或者我可以直接迁移到 SQL Server 2014 SP2 CU8 而不应用旧的 Service Pack 1 和相关的累积更新吗?

sql-server update service-pack patching

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

使用默认关键字插入多行时,PostgreSQL 10 标识列获得“空值”

我最近从 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)

postgresql identity postgresql-10

7
推荐指数
1
解决办法
1987
查看次数

我可以将 SELECT TOP() 与 IN 运算符结合使用吗?

我想知道是否有办法对SELECTIN 中找到的每个匹配值进行查询。

考虑到下表包含IN运算符引用的每个值的 100 条记录,我希望每次匹配只返回 50条记录。

SELECT TOP (50) COLUMN 
FROM TABLE 
WHERE COLUMN IN (1,2,3)
Run Code Online (Sandbox Code Playgroud)

有没有一种有效的方法可以做到这一点?

我能想到的唯一方法是对每个值执行查询,IN考虑到实际查询从各种表中检索许多列,这将太慢。

sql-server sql-server-2012 greatest-n-per-group

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

Like 谓词只匹配整个单词

我有一个 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' …

sqlite select like

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

将进行源数据库的尾日志备份 ? 为什么我看到这个警告

我从第一台服务器(运行 SQL Server 2014)备份了一个数据库。

当我尝试将备份恢复到第二台服务器(运行 SQL Server 2012)时,我收到以下警告消息:

警告消息 - 将进行源数据库的尾日志备份。查看选项页面上的设置。

如果我忽略此消息并尝试恢复,则会失败。

任何的想法 ?我该怎么办 ?

sql-server restore sql-server-2012 sql-server-2014

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

事务日志在大表中完全更改列类型

我有一个超过 4 亿行的表,想将其中一列的数据类型转换datetimedatetime2(2).

如果我执行我的语句,我会收到以下错误:

由于“ACTIVE_TRANSACTION”,数据库“xxxx”的事务日志已满

那么这里有没有可能更新这个表?

(我的日志文件的最大大小为 150GB,我没有更多可用空间。)

sql-server ddl transaction-log

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