我的表中可能有也可能没有相同的员工姓名。问题是我无法知道 Table1 是否会包含更多名称,或者 Table2 是否会包含更多名称,所以我认为联合可以解决这个问题。但是,正如您在下面的语法中看到的那样,它会生成“C”的行,因为它存在于两个表中。这是我想要的输出
empName | TotalSW | TotalSNT
--------+---------+---------
A | 1 | 0
B | 1 | 0
C | 1 | 1
x | 0 | 1
z | 0 | 1
Run Code Online (Sandbox Code Playgroud)
使用下面的 DDL 如何编写查询以生成此输出?
Create Table #Test1
(empName varchar(100), swas varchar(100))
Create Table #Test2
(empName varchar(100), swont varchar(100))
Insert Into #Test1 (empName, swas) VALUES
('A', 'res1'), ('B', 'tim1'), ('C', 'run34')
Insert Into #Test2 (empName, swont) VALUES
('C', 'er12'), ('z', 'nn12'), ('x', '23rw')
Select empName, TotalSW …Run Code Online (Sandbox Code Playgroud) 我有一个程序应该检查特定日期范围内的记录是否存在,如果存在则获取记录,否则获取最后 20 条记录。
为此,我必须多次编写查询,一次用于检查存在性,然后获取相同的记录或获取没有 where 子句但有限制的记录。
查询在程序内部是这样的
set @cnt = (select count(*) from table where date_field between date1 and date2) ;
if @cnt > 0 then
select * from table where date_field between date1 and date2 ;
else
select * from table order by date_field desc limit 0,20 ;
end if ;
Run Code Online (Sandbox Code Playgroud)
有什么办法可以在单个查询中完成,因为我的查询有太多连接并且太复杂,可能需要一些时间,所以如果我调用它两次,获取时间会增加。
我正在设置从本地 SQL Server 到 MS Azure 上的数据库的链接服务器(见下文)。当非管理员用户通过链接服务器查询 Azure 数据库时,他们会得到:
Msg 7416, Level 16, State 2, Line 1 访问远程服务器被拒绝,因为不存在登录映射。
关于如何让这个工作的任何想法?
EXEC sp_addlinkedserver
@server='LincServer',
@srvproduct='',
@provider='sqlncli',
@datasrc='myAzureDB.database.windows.net',
@location='',
@provstr='Encrypt=Yes;TrustServerCertificate=No;User ID=myAzureID',
@catalog='MyDB'
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'LincServer',
@useself = 'false',
@rmtuser = 'myAzureID',
@rmtpassword = '########'
GO
Run Code Online (Sandbox Code Playgroud) 我想减小MySQL 服务器 5.7 上ibdata1和ib_logfile0文件的大小。但是,我不想激活该innodb_file_per_table选项。
在不激活的情况下减小上述文件大小的最佳选择是innodb_file_per_table什么?
我在 Amazon RDS 上创建了一个 PostgreSQL 10 实例,并在我的数据库中启用了 PostGIS 2.4 扩展。我想测试 Amazon RDS 作为动态矢量切片服务器的性能。
这取决于在启用 PostGIS 的数据库中使用 ST_AsMVT 和 ST_AsMVTGeom 命令的能力。
这些函数需要在libprotobuf-c托管 PostgreSQL 实例的系统上安装库。
Amazon RDS 实例似乎不支持libprotobuf-c并且 Amazon RDS 上的 PostgreSQL/PostGIS 无法使用 PostGIS 2.4 中引入的矢量切片功能。
有谁知道libprotobuf-c在 Amazon RDS 上启用支持的方法?
SQL Server 数据库页的大小定义为 8192 字节。有一些头信息据说大小为 96 字节。
如果您曾经尝试创建一个包含超过 8053 个字节的列定义的表,那么您将看到错误消息:
Run Code Online (Sandbox Code Playgroud)Creating or altering table 'Generated_Data_GUID' failed because the minimum row size would be 8061, including 7 bytes of internal overhead. This exceeds the maximum allowable table row size of 8060 bytes.
以下是一个示例表 DDL:
CREATE TABLE [dbo].[Generated_Data_GUID](
[ID] [int] IDENTITY(1,1) NOT NULL,
[GUID] [uniqueidentifier] NOT NULL,
[SEQGUID] [uniqueidentifier] NOT NULL,
[Data1] [char](4000) NULL,
[Data2] [char](4000) NULL,
[Data3] [char](9) NULL,
[EntryDate] [datetime2](7) NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
通过以上的DDL如果我改变了列的列定义Data3是char(10),那么我会打的错误消息。
每个列类型的字节大小如下: …
sql-server sql-server-2008-r2 sql-server-2012 sql-server-2014 sql-server-2017
大多数情况下,我们使用整数序列作为主键来保持表中行的唯一性。为此,我们不能使用时间戳而不是整数吗?该策略是否有任何缺陷,因为我认为机器不能同时“同时”做两件事......对吗?
我正在处理一个在键中包含大量休眠序列的数据库,所以我想使用时间戳作为解决方案。在实践中是否有任何类似的方法可以与任何数据库一起使用?要是知道就好了。
编辑:我要问的是,由于对我们(人类)来说,没有两个时刻是相同的,这对计算机也适用吗?我知道计算机通过某些晶体的振动来跟踪时间(不确定它可以测量多小的时间)。
在数据库中,我有一些表,除了时间(审计跟踪)外没有主键适用,并且指定一个序列(hibernate_sequence)将数字增加到极高的程度,这使得使用其他表不方便,因为它会影响所有表序列作为主键。
因此,如果 PostgreSQL 可以保证不会在同一时间戳上发生两次插入/更新操作,那么我可以将其用作主键,但如果不能,则显然我不能使用此解决方案。
基本问题是:PostgreSQL的规定,任何两个记录将被插入/同时更新任何保证(通过某些方法或配置)“时间”?
谢谢
我正在尝试找出监控这两个事件的方法
记录发送队列大小 - 我可以在 perfmon 中看到这一点
重做队列大小 - 我可以在 dmv 中看到,但在 perfmon 计数器中看不到
有没有什么方法可以使用 perfmon,以便我可以计算重做队列大小,即使计数器在 perfmon 中不可用?
另外,我发现这些事件在属于数据库镜像的一部分时会记录在 Windows 事件查看器中。但现在使用 AG,如何在 Windows 事件查看器中记录这 2 个超出特定范围的值?
编辑
我所说的警报是指我们在 AG 中是否有一些内容,如此处所示,作为从数据库镜像看到的消息?
我对 PostgreSQL 和 PostGIS 有一些问题。
在使用特殊光栅文件上的一些坐标运行以下查询后,我收到错误。
直到上周,它都运行良好。
查询是:
select (ST_ValueCount(ST_Union(ST_Clip(r.rast,r.geom,true),1,'area_sum'))).* from (select * ,(SELECT (ST_SetSRID(ST_GeomFromGeoJSON('{ "type": "Polygon", "coordinates": [[[47.48034200000001,39.13347600000003],[47.49611600000003,39.114525000000015],[47.510418000000016,39.10534899999999],[47.52599799999996,39.08644900000013],[47.54254200000014,39.05803700000013],[47.53256200000004,39.0290940000001],[47.52131200000002,39.00986000000012],[47.49699400000003,38.99015700000001],[47.498607000000106,38.97137000000009],[47.52537600000005,38.96289400000006],[47.52689400000003,38.94405700000004],[47.54134800000014,38.92563300000012],[47.529907000000094,38.906041000000016],[47.519521,38.87627100000009],[47.521041000000025,38.85683000000006],[47.54817600000001,38.83865400000002],[47.58924400000001,38.80162500000006],[47.59110200000009,38.762773000000095],......]]}'), 4326)))as geom from public.layer where filename in ( 'myrasterfile.tif') ) as r where ST_Intersects(r.rast,r.geom))
Run Code Online (Sandbox Code Playgroud)
错误是:
Run Code Online (Sandbox Code Playgroud)SQLSTATE[08006] [7] FATAL: the database system is in recovery mode
为什么我的 PostgreSQL 实例在此查询过程中进入恢复模式?
我应该怎么办?
我正在运行查询存储以使数据库性能更好。到目前为止,它一直工作正常。当我尝试加载最后一天的热门持续时间时,我花了 26 分钟来加载屏幕。
我运行的 SQL 版本是: Microsoft SQL Server 2017 (RTM-CU27) (KB5006944) - 14.0.3421.10 (X64) Oct 14 2021 00:47:52 版权所有 (C) 2017 Microsoft Corporation Standard Edition (64-bit) on Windows Server 2019 Datacenter 10.0(内部版本 17763:)(虚拟机管理程序)
QS 中弹出查询:
/*
This query text was retrieved from showplan XML, and may be truncated.
*/
SELECT TOP (@results_row_count)
p.query_id query_id,
q.object_id object_id,
ISNULL(OBJECT_NAME(q.object_id),'') object_name,
qt.query_sql_text query_sql_text,
ROUND(CONVERT(float, SUM(rs.avg_duration*rs.count_executions))*0.001,2) total_duration,
SUM(rs.count_executions) count_executions,
COUNT(distinct p.plan_id) num_plans
FROM sys.query_store_runtime_stats rs
JOIN sys.query_store_plan p ON p.plan_id = rs.plan_id
JOIN …Run Code Online (Sandbox Code Playgroud) sql-server ×5
mysql ×2
performance ×2
postgis ×2
postgresql ×2
amazon-rds ×1
mysql-5.7 ×1
php ×1
primary-key ×1
query ×1
query-store ×1
t-sql ×1
timestamp ×1