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
    • 最新
    • 标签
主页 / user-75582

Phil's questions

Martin Hope
Phil
Asked: 2020-03-18 08:56:37 +0800 CST

按辅助键过滤结果集的最佳方法

  • 0

我有一个带有主键和辅助键的表,例如

CREATE TABLE Entry (
     PrimaryKey int NOT NULL,
     SecondaryKey int NOT NULL,
     Data nvarchar(100) NOT NULL,
     DateCreated DATETIME NOT NULL
);

    INSERT INTO Entry VALUES(1,1,'test',getutcdate()),
(2,1,'test',getutcdate()),
(3,2,'test',getutcdate()),
(4,3,'test',getutcdate()),
(5,3,'test',getutcdate()),
(6,3,'test',getutcdate()),
(7,4,'test',getutcdate()),
(8,4,'test',getutcdate())

我希望能够返回按创建日期排序的条目,但每个辅助键只有 1 个条目。所以有了上面的数据,我只会得到 4 行,每个辅助键的最新条目。

最好的方法是什么?

更新:下面回答的问题,但我接下来的问题是“考虑该表是否有多个数据字段,什么是更好的查询?” 原始响应,所有内容都在 CTE 中:

with CTE as (
 select [PrimaryKey], SecondaryKey, [Data1],[Data2],[Data3],...DateCreated,
        rn = row_number() over (partition by SecondaryKey order by DateCreated desc)
  from dbo.Entry
  )
 select [PrimaryKey], SecondaryKey, [Data1],[Data2],[Data3],...,DateCreated
 From CTE where rn = 1 

或者在另一个查询中,保存在 CTE 中的数据被最小化:

    with CTE as (
     select [PrimaryKey], SecondaryKey, DateCreated,
            rn = row_number() over (partition by SecondaryKey order by DateCreated desc)
      from dbo.Entry
      )
     SELECT PrimaryKey,SecondaryKey, [Data1],[Data2],[Data3],...,DateCreated 
FROM ENTRY
WHERE PrimaryKey IN( select [PrimaryKey] FROM CTE where rn = 1 )
sql-server query-performance
  • 1 个回答
  • 39 Views
Martin Hope
Phil
Asked: 2019-02-19 09:07:06 +0800 CST

全文搜索仅执行“开始于”搜索

  • 8

非常基本的问题,但我怎样才能让containstable搜索进行实际的“包含”搜索,而不是“开始于”搜索?

例如,从文档中的示例:

CREATE TABLE Flags (Country nvarchar(30) NOT NULL, FlagColors varchar(200));  
CREATE UNIQUE CLUSTERED INDEX FlagKey ON Flags(Country);  
INSERT Flags VALUES ('France', 'Blue and White and Red');  
INSERT Flags VALUES ('Italy', 'Green and White and Red');  
INSERT Flags VALUES ('Tanzania', 'Green and Yellow and Black and Yellow and Blue');  
SELECT * FROM Flags;  
GO  

CREATE FULLTEXT CATALOG TestFTCat;  
CREATE FULLTEXT INDEX ON Flags(FlagColors) KEY INDEX FlagKey ON TestFTCat;  
GO   

SELECT * FROM Flags;  
SELECT * FROM CONTAINSTABLE (Flags, FlagColors, 'Green') ORDER BY RANK DESC;  
SELECT * FROM CONTAINSTABLE (Flags, FlagColors, 'Green or Black') ORDER BY RANK DESC;  

工作正常,也是如此:

SELECT * FROM CONTAINSTABLE (Flags, FlagColors, '"Gree*"') ORDER BY RANK DESC;  

但这不会:

SELECT * FROM CONTAINSTABLE (Flags, FlagColors, '"*reen"') ORDER BY RANK DESC;  
SELECT * FROM CONTAINSTABLE (Flags, FlagColors, '"*reen*"') ORDER BY RANK DESC;

我应该使用不同的查询,还是我正在寻找的东西是不可能的?

sql-server full-text-search
  • 1 个回答
  • 4136 Views
Martin Hope
Phil
Asked: 2019-01-14 12:22:04 +0800 CST

Azure SQL 中模式之间的 FK 关系不起作用

  • 0

我在将 SQL 2014 数据库迁移到 Azure 数据库时遇到问题。除了不在同一架构中的表之间的任何 FK 关系外,我能够迁移所有内容。例如,2 个表:

    CREATE TABLE [dbo].[User] (
        [UserGUID]          UNIQUEIDENTIFIER CONSTRAINT [DF_CoBRAUser_CoBRAUserGUID] DEFAULT (newsequentialid()) NOT NULL,
        [UserName]               NVARCHAR (400)   NOT NULL,
        [OrganizationName]       NVARCHAR (100)   NOT NULL,
        [Title]                  NVARCHAR (100)   NULL,
        [Department]             NVARCHAR (100)   NULL,
        [FirstName]              NVARCHAR (100)   NULL,
        [LastName]               NVARCHAR (100)   NULL,
        [UserImage]              VARBINARY (MAX)  NULL,
        [DateCreated]            DATETIME         NOT NULL,
        [DateLastModified]       DATETIME         NOT NULL,
        [MotherTongue]           NVARCHAR (50)    NULL,
        [LockoutEndDateUtc] DATETIME NULL,
[ClusterID]              INT              IDENTITY (1, 1) NOT NULL,
CONSTRAINT [PK_User] PRIMARY KEY NONCLUSTERED ([UserGUID] ASC)
    );
GO
CREATE UNIQUE CLUSTERED INDEX [IX_User_ClusterID] ON dbo.User ([ClusterID])
GO
create schema [CConfigD]
    GO
    CREATE TABLE [CConfigD].[Alarm] (
        [AlarmGUID]   UNIQUEIDENTIFIER CONSTRAINT [DF_Alarm_AlarmGUID] DEFAULT (newsequentialid()) NOT NULL,
        [CreatedBy]         UNIQUEIDENTIFIER NOT NULL,
        [AlarmText]         NVARCHAR (1000)  NOT NULL,
        [DateCreated]       DATETIME         NOT NULL,
        [DateLastModified]  DATETIME         NOT NULL,
        CONSTRAINT [FK_Alarm_User] FOREIGN KEY ([CreatedBy]) REFERENCES [dbo].[User] ([UserGUID])
    );

这在我的 sql 2014 框上运行良好,如果我尝试在 azure 数据库上运行 dacpac,我会收到以下错误:

消息 1776,级别 16,状态 0,第 8 行在引用表“dbo.User”中没有与外键“FK_Alarm_User”中的引用列列表匹配的主键或候选键。消息 1750,级别 16,状态 1,第 8 行无法创建约束或索引。查看以前的错误。

这是不允许的,我不知道吗?为了允许这种外键,我需要启用一个设置吗?

sql-server schema
  • 1 个回答
  • 165 Views
Martin Hope
Phil
Asked: 2019-01-12 15:23:22 +0800 CST

将数据从 sql 2016 备份部署到 azure 数据库

  • 0

我从 SQL 2016 服务器获得了备份数据,我想将其移动/恢复到 Azure 数据库中。我没有看到在任何地方执行此操作的内部选项,所以看起来最好的选择是在本地还原,为数据构建架构/数据脚本,然后在 azure 数据库上运行脚本。

唯一的问题是我取回的脚本大约有 4GB 大。它不会加载到 sql management studio 或 azure 自己的“查询编辑器”页面中,如果我通过 sqlcmd 进行部署,它会在中途崩溃,而没有一种简单的方法来确定崩溃的位置以及如何从该点恢复。

有没有好的方法可以做到这一点?我计划需要多次这样做,所以我想把我的方法记下来。谢谢!

sql-server migration
  • 1 个回答
  • 42 Views
Martin Hope
Phil
Asked: 2018-07-21 08:26:49 +0800 CST

几何的 SQL 语法问题

  • 0

我一定是遗漏了一些非常基本的东西,但我有 2 张桌子。两者都是基本的,只是一个主键(作为唯一标识符)和一个几何列。我正在尝试查找其中一个表中的点是否存在于另一个表中的多边形中。

所以这没有任何问题(从 PolygonTable 返回一行):

DECLARE @g geometry;  
SET @g = geometry::STGeomFromText('POINT (-117.6743333 33.8343333)', 0);  
select * from PolygonTable where Polygon.STIntersects(@g)= 1

这也有效

declare @h geometry
select @h =  Point from PointTable where PointGUID=N'3B77C26E-ACAC-4328-ED94-08D5EDE20723'
SELECT @h.ToString();  // outputs POINT (-117.6743333 33.8343333) above

但出于某种原因,以下内容不起作用

declare @h geometry
select @h =  Point from PointTable where PointGUID=N'3B77C26E-ACAC-4328-ED94-08D5EDE20723'
select * from PolygonTable where Polygon.STIntersects(@h)= 1

该查询根本不返回任何行。基本上在顶级查询中是一样的,我错过了什么?

这是基本表格设置的要点: https ://gist.github.com/vishnu4/9bd70658b49c2cfa00ca81ff1d25bc84 您可以使用我上面的查询来测试我的结果。

sql-server geometry
  • 1 个回答
  • 98 Views
Martin Hope
Phil
Asked: 2018-03-30 07:40:15 +0800 CST

空间查询以获取结果集的封闭半径/多边形

  • 4

是否可以在 SQL 中运行空间数据查询,然后只返回一个多边形或半径,将查询中的所有空间数据包围、聚合到一个要素中?

sql-server aggregate
  • 1 个回答
  • 238 Views
Martin Hope
Phil
Asked: 2018-03-17 10:00:39 +0800 CST

将数据从多个不同的数据库迁移到 1

  • 1

我有一个包含 5 个不同数据库的 SQL Server 实例。出于某些原因,我们希望将它们合并到 1 个数据库中,将每个数据库分离到它自己的模式中。我已经将架构/表构建到“主”数据库中,但是我无法构建一种将数据从旧数据库导入新主数据库的好方法。就像是:

insert into [masterDB].[oldDBSchema].[tableName] 
select * from [oldDB].dbo.[tableName]

不起作用,因为这个错误:

仅当使用列列表且 IDENTITY_INSERT 为 ON 时,才能指定表“cobraclientdata.cconfigd.adjudicationbutton”中标识列的显式值。

现在我可以很容易地将 IDENTITY_INSERT 设置为 ON,但如果不需要,我宁愿不指定列,因为对每个表都这样做是一个 PITA。这些表具有完全相同的结构,有没有一种快速的方法可以做到这一点(我正在尝试构建一个脚本,我可以在多个服务器上运行这个“更新”),或者我是否坚持为每个表写出列,或明确地进行导入/导出数据?

sql-server migration
  • 2 个回答
  • 75 Views
Martin Hope
Phil
Asked: 2018-01-31 08:06:44 +0800 CST

SQL Always on availability with failover 和 mixed authentication

  • 1

我有 2 个运行 SQL Server 2016 的盒子,并使用 Always On Availability 进行设置。我设置了一个侦听器来选择在发生故障转移时要与哪个服务器通信,这似乎工作正常,除了我使用的是混合身份验证,而且我的连接字符串使用的是 SQL Server 身份验证用户而不是窗户一个。

例如,我的应用程序中的连接字符串是:

Database=MySQLServer;Server=AGListener;User Id=sqluser;Password=XXXXXXX;

当我针对主要对象工作时,这很好用。当我故障转移到辅助数据库时,出现“sqluser 对数据库没有任何权限”的错误。如果我在辅助服务器上运行以下脚本:

EXEC sp_change_users_login 'Update_One', 'sqluser', 'sqluser'

然后它再次正常工作,但是当我故障转移回原始主服务器时,我再次收到错误消息。看起来在每次故障转移时,我都必须运行更新用户脚本才能使连接字符串起作用。

在 AG 环境中对连接字符串使用 SQL Server 身份验证不是一个好主意吗?还是我缺少一个步骤?我希望我的故障转移是自动的,而不是每次都需要记住运行脚本。

sql-server sql-server-2016
  • 1 个回答
  • 859 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