小编Fel*_*tan的帖子

选择仅属于特定部门的用户

我有下表有两个字段,即a和b,如下所示:

create table employe
(
    empID varchar(10),
    department varchar(10)
);
Run Code Online (Sandbox Code Playgroud)

插入一些记录:

insert into employe values('A101','Z'),('A101','X'),('A101','Y'),('A102','Z'),('A102','X'),
             ('A103','Z'),('A103','Y'),('A104','X'),('A104','Y'),('A105','Z'),('A106','X');


select * from employe;
Run Code Online (Sandbox Code Playgroud)
empID   department
------------------
A101    Z
A101    X
A101    Y
A102    Z
A102    X
A103    Z
A103    Y
A104    X
A104    Y
A105    Z
A106    X
Run Code Online (Sandbox Code Playgroud)

注意:现在我想显示仅属于该部门Z且仅属于该部门的员工Y.因此,根据条件,A103应该显示唯一的员工,因为他只属于部门ZY.但员工A101不应该出现,因为他属于Z,X, and Y.

预期成果:

如果条件是:ZY则结果应该是:

empID
------
A103
Run Code Online (Sandbox Code Playgroud)

如果条件是:ZX则结果应该是:

empID
------ …
Run Code Online (Sandbox Code Playgroud)

sql sql-server postgresql sql-server-2008-r2

23
推荐指数
4
解决办法
2533
查看次数

在Oracle SQL中将时间戳转换为日期

我们如何将时间戳转换为日期?

该表具有一个字段,start_ts它是的timestamp格式:

'05/13/2016 4:58:11.123456 PM'
Run Code Online (Sandbox Code Playgroud)

我需要查询表并找到表中的最大值和最小值timestamp,但我无法.

Select max(start_ts) 
from db 
where cast(start_ts as date) = '13-may-2016'
Run Code Online (Sandbox Code Playgroud)

但查询不返回任何值.

请帮我找一个日期的最大时间戳.

sql oracle11g

17
推荐指数
4
解决办法
16万
查看次数

使用SQL缩短时间段

我有一个大数据集,为了这个问题的目的有3个字段:

  • 组标识符
  • 从日期
  • 至今

在任何给定的行上,From Date总是小于To Date但在每个组内,由日期对表示的时间段(没有特定顺序)可以重叠,在一个在另一个中包含,或者甚至是相同的.

我最终想要的是一个查询,它将每个组的结果浓缩到连续的时间段.例如,一个看起来像这样的组:

| Group ID | From Date  | To Date    |
--------------------------------------
| A        | 01/01/2012 | 12/31/2012 |
| A        | 12/01/2013 | 11/30/2014 |
| A        | 01/01/2015 | 12/31/2015 |
| A        | 01/01/2015 | 12/31/2015 |
| A        | 02/01/2015 | 03/31/2015 |
| A        | 01/01/2013 | 12/31/2013 |
Run Code Online (Sandbox Code Playgroud)

会导致这个:

| Group ID | From Date  | To Date    |
--------------------------------------
| A        | …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

9
推荐指数
1
解决办法
1026
查看次数

SQL Large Table选择随机行策略

我想从一个非常大的表(10密耳记录)中选择一个随机行.因此,最常见的策略,例如RAND()并且NEWID()似乎并不实用.

我尝试了以下策略,并想知道这是否是最理想的方式.

  1. 创建一个名为"RandomSort"的新字段作为UniqueIdentified

  2. 在每个小时/每天结束时,将对Update RandomSort = NewID()整个表格进行操作

  3. 每次我需要查询,我都可以做 Top 10 Order by RandomSort

它确实完成了工作(优于ORDER BY NewID),但不确定这是否是目前为止的最佳实践?

sql-server select

8
推荐指数
1
解决办法
714
查看次数

在EXEC中连接INT和VARCHAR不会产生转换错误

鉴于下表:

USE tempdb;

CREATE TABLE #T(Val INT);
INSERT INTO #T VALUES (1), (2), (3), (4), (5);
Run Code Online (Sandbox Code Playgroud)

我想使用EXEC给定的Val值执行动态sql查询:

DECLARE @sql NVARCHAR(MAX);
DECLARE @Val INT = 3;

EXEC ('SELECT * FROM #T WHERE Val = ' + @Val);
Run Code Online (Sandbox Code Playgroud)

执行时没有错误,并给出正确的结果.

我的假设是这会产生错误:

将varchar值'SELECT*FROM #T WHERE Val ='转换为数据类型int时转换失败.

由于@ValINT数据类型和数据类型优先级的规则,因此EXEC必须将其中的查询转换为INT.

我的问题是为什么没有EXEC产生转换错误的调用?


笔记:

- 我知道sp_executesql.我也不是在寻求替代方案.我只是要求解释为什么没有产生错误.

-这个问题的答案的问题似乎并没有解释我的情况的问题,是指VARCHARVARCHAR串联.

sql-server dynamic-sql

8
推荐指数
1
解决办法
743
查看次数

C# 代码中的 SQL Lead 和 Lag 函数

是否可以使用C# 中的LEADLAGSQL 函数?

我更喜欢的方法是:

  1. Linq 到 SQL
  2. 实体框架
  3. 动态链接
  4. SQLFunctions 类
  5. 通过 SQLCommand 手动 TSQL

我知道可以通过方法 5 完成,但是方法 1 到 4 呢?

c# sql sql-function sql-server-2012

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

如何在sql中选择连续日期

是否有任何功能来检查连续日期.我在解决以下问题时遇到问题:

我的表有一个datetime包含以下数据的列:

----------
2015-03-11
2015-03-12
2015-03-13
2015-03-16
Run Code Online (Sandbox Code Playgroud)

给定开始日期2015-3-11和结束日期为2015-3-17.我希望结果如下:

----------
2015-03-11
2015-03-12
2015-03-13
Run Code Online (Sandbox Code Playgroud)

谁能提出任何建议?

sql sql-server

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

自动增加sql-server中的非标识列

我们Identity Column的数据库中有非特定值.我们有如下要求,

每当记录insert到该列时,值应增加1.

如何处理这个sql server

谢谢您的帮助.

sql t-sql sql-server sql-server-2012

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

为什么这在SQL Server中有效?(@counter +++++ + 1)

为什么这种类型的工作在SSMS中并且不会产生波形或运行时错误?

DECLARE @counter  integer
SET @counter = 42
WHILE @counter < 52
BEGIN 
    set @counter = @counter++++++++  + 1
    PRINT 'The counter is ' + cast(@counter as char) 
END
Run Code Online (Sandbox Code Playgroud)

sql sql-server ssms sql-server-2012 ssms-2012

6
推荐指数
0
解决办法
59
查看次数

当您已经有了应用程序端池时,您还需要 AWS RDS 代理吗?

作为这个问题的后续

当您已经有了应用程序端池时,您还需要 AWS RDS 代理吗?

我有一个 Springboot 应用程序,它使用默认的 HikariDataSource 来管理数据库连接池。我们计划使用的数据库驱动程序是 MariaDB Connector/J,因为它可以处理 aurora 故障转移,而且也是 AWS 在其文档中推荐的驱动程序。该应用程序具有相当稳定的小负载,没有太多峰值。但是,它应该具有高可用性。

但是,我们还发现 RDS 代理还可以管理数据库连接池和故障转移。

我想使用 RDS Proxy,以便减轻管理数据库连接池和处理应用程序故障转移的负担。但是,我似乎无法关闭 Springboot 中的应用程序端池(默认情况下它在那里)。而且我还需要一个驱动程序来连接数据库,所以我不妨使用 Connector/J。有了我拥有的这些堆栈/工具,RDS 代理是否太多且多余?

amazon-rds connector-j spring-boot amazon-rds-proxy

5
推荐指数
1
解决办法
2955
查看次数