如您所知,union删除重复的行。我认为它从后者中删除,但事实并非如此。
我发现如果没有order by子句,Oracle 会按第一列对合并的数据集进行排序并删除重复项。
select 4,5,6 from dual
union
select 1,2,3 from dual
union
select 4,5,6 from dual
Run Code Online (Sandbox Code Playgroud)
结果:
1 2 3
4 5 6
Run Code Online (Sandbox Code Playgroud)
而我期望:
4 5 6
1 2 3
Run Code Online (Sandbox Code Playgroud)
我在这方面失败了很多次,并使问题变得简单,就像上面的例子一样。
如何在没有 的情况下保持联合序列order by?
在我的真实案例中,第一个select是完全匹配(=)结果,第二个是部分匹配(like)结果。
例如,如果我搜索罗马人。
全场比赛结果:罗马,部分比赛结果:香气。
当然,完整的比赛结果应该是第一位的。正如我所说,它似乎order by是union结果的第一列。
但是,如您所见:
select 'roma' from dual -- result comes out anyway..
union select 'aroma' from dual; …Run Code Online (Sandbox Code Playgroud) 我有以下查询返回重复值:
SELECT
[t].[Field1], [t].[Field2], COUNT([t].[Field2])
FROM [dbo].[Table1] AS [t]
WHERE [t].[Field2] <> ''
GROUP BY [t].[Field1], [t].[Field2]
HAVING COUNT([t].[Field2]) > 1
Run Code Online (Sandbox Code Playgroud)
鉴于该声明,我想编写更新声明以Field2在这些条件下清除。我会怎么写这个?
我来自 Oracle 背景,遇到了创建 SQL Server 视图的代码,这是我以前从未见过的。
我们有一个名为 viewA 的视图(例如)
在生成视图的脚本中,我看到了这段代码
select columnA, columnB, columnC
from tableA as vw_tableB
Run Code Online (Sandbox Code Playgroud)
我的问题是,视图到底叫什么?
是viewA还是vw_tableB。
我的另一个问题是这背后的基本原理是什么?
我使用的是 SQL Server 2005。我的一个备份驱动器已满,所以我想移动 2 天之前的备份。
我正在考虑创建一个每天运行的作业,但卡在了移动.bak文件的脚本上。
您知道从驱动器 A 移动文件并将其移动到共享位置的脚本吗?我的.bak文件没有时间戳。
我的生产服务器的数据库意外增长,我几乎要创建一个作业来缩小每月运行一次的数据库。这是个好主意吗?
备份失败并且记录了大量事务的失败时间,这使数据库迅速增长。
我正在使用 SQL Server 2008 R2。
我通过以下查询得到了一些奇怪的结果:
SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
and `StockUpdated` <= '2016-12-31'
Run Code Online (Sandbox Code Playgroud)
结果是:24446
SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
Run Code Online (Sandbox Code Playgroud)
结果是:33098
SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
and `StockUpdated` <= '2017-1-1'
Run Code Online (Sandbox Code Playgroud)
结果是:33098
SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2017-1-1'
Run Code Online (Sandbox Code Playgroud)
结果是:0
我的问题是为什么下面的查询不完美?
SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
and `StockUpdated` <= '2016-12-31'
Run Code Online (Sandbox Code Playgroud) 我有两个 Postgres 数据库。我可以在日志文件中只为其中之一写入 SQL 语句吗?
我想知道当涉及到 KEY 锁时,SQL Server 对于唯一非聚集索引和非唯一聚集索引的行为是否有所不同。
我有一个主动的被动 SQL 集群。当我从 SQL Server 配置管理器停止活动节点上的 SQL 服务时,SQL 群集不会进行故障转移,而是显示为部分联机。
如果 SQL 服务从 Configuration Manager 停止,它不会故障转移到另一个节点?
我必须为我的客户准备测试用例,所以我迫切需要清除这个疑问。
经过一段时间寻找答案后,我收到了很多问题,说要使用coalesce、concat()等,但我需要的是:
桌子:
create table nulos ( nome varchar(max))
alter table nulos add cidade varchar(max)
Run Code Online (Sandbox Code Playgroud)
价值观:
insert into nulos values ( 'rafael','são paulo'),('juliana',null)
Run Code Online (Sandbox Code Playgroud)
我需要将这个表中的值连接到一个插入中,如下所示:
select 'insert into nulos (nome,cidade) values ('+nome+','+cidade+')'
from nulos
Run Code Online (Sandbox Code Playgroud)
和选择的结果:
insert into nulos (nome,cidade) values (rafael,são paulo)
NULL
Run Code Online (Sandbox Code Playgroud)
如何在此串联中使用 NULL 值?每个答案都说用''or替换空值'_',但我需要的是:
insert into nulos (nome,cidade) values (rafael,são paulo)
insert into nulos (nome,cidade) values (Juliana,NULL)
Run Code Online (Sandbox Code Playgroud)
SET CONCAT_NULL_YIELDS_NULL on 不是一个选项,因为它只是删除 NULL 值,我需要插入它。
sql-server ×7
clustering ×1
count ×1
datetime ×1
disk-space ×1
duplication ×1
failover ×1
locking ×1
mysql ×1
null ×1
oracle ×1
order-by ×1
postgresql ×1
powershell ×1
shrink ×1
t-sql ×1
union ×1
update ×1
view ×1