因此,我有一个名为temp的简单表,可以通过以下方式创建:
CREATE TABLE temp (value int, id int not null primary key);
INSERT INTO temp
VALUES(0,1),
(0,2),
(0,3),
(0,4),
(1,5),
(1,6),
(1,7),
(1,8);
Run Code Online (Sandbox Code Playgroud)
我有第二个表temp2可以通过以下方式创建:
CREATE TABLE temp (value int, id int);
INSERT INTO temp
VALUES(0,1),
(0,2),
(0,3),
(0,4),
(1,5),
(1,6),
(1,7),
(1,8);
Run Code Online (Sandbox Code Playgroud)
temp和temp2之间的唯一区别是id字段是temp中的主键,而temp2没有主键。我不确定如何,但是通过以下查询得到的结果却有所不同:
select * from temp
where id in (
select id
from (
select id, ROW_NUMBER() over (partition by value order by value) rownum
from temp
) s1
where rownum = 1
)
Run Code Online (Sandbox Code Playgroud)
这是temp的结果:
value id
----------- ----------- …Run Code Online (Sandbox Code Playgroud) 我一直在使用 DBeaver 作为 SQL Server Management Studio 的替代品,我很喜欢它。我唯一无法弄清楚的是如何将脚本与数据库相关联。例如,在 SSMS 中,我可以在对象资源管理器中右键单击一个数据库(我们称之为 A),然后单击“新建查询”(或 ctrl+n)以打开在数据库 A 中处于活动状态的脚本。如果我在一个不同的数据库 (B),该脚本与数据库 B 相关联。当我切换回原始脚本时,我将重新使用数据库 A,而无需从数据库列表中手动选择或执行USE语句。显然,切换回第二个脚本将使数据库 B 再次处于活动状态。
不幸的是,在 DBeaver 中,所有脚本似乎只有一个活动数据库。有没有办法在 DBeaver 中设置它以这种方式像 SSMS 一样工作?
编辑:DBeaver 将单个数据库称为目录/模式。这就是我试图与单个脚本相关联的内容。