我们的数据库中有两个名为“ClientIncome”和“PartnerIncome”的现有列。我们想添加一个名为“HouseholdIncome”的新列
我们想将“ClientIncome”和“PartnerIncome”中的值添加到新的“HouseholdIncome”列中?
这是我们数据库的一个小例子。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Incomes](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ClientIncome] [float] NOT NULL,
[PartnerIncome] [float] NULL,
[HouseholdIncome] [float] NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Incomes] ON
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (1, 130.77, NULL, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (2, 294.82, 339.28, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (3, 0, NULL, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) …Run Code Online (Sandbox Code Playgroud) 我知道 MS SQL Server 的默认 TCP 端口是 1433,出于某些安全原因最好更改它。但是我想知道SQL Server选择哪个端口而不是1433更好,才能正常工作,不干扰其他程序的工作?如果我选择一个已经被其他程序使用的端口怎么办?
谢谢你的时间!
表格1
Id Name DemoID
1 a 33
2 b 44
3 c 33
4 d 33
5 e 44
Run Code Online (Sandbox Code Playgroud)
表2
Id DemoID IsTrue
11 33 1
12 44 1
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用以下 2 个使用连接和使用子查询的查询来找到表 2 中存在哪个 DemoID,但是对于更多的记录,哪个更准确/更相关?
使用加入 -
SELECT Table1.Id FROM Table1 Table1 join Table2 Table2 on Table1.DemoID = Table2.DemoID
WHERE Table2.IsTrue = 1
Run Code Online (Sandbox Code Playgroud)
使用子查询 -
SELECT Table1.Id FROM Table1 Table1
WHERE Table1.DemoID in (select Table2.DemoID from Table2 Table2)
Run Code Online (Sandbox Code Playgroud) 这是指这个问题:Duplicate records returned from table with no duplicates
“读提交”隔离级别假定一个事务可以以不同的方式读取同一条记录,但并不明确暗示记录可以重复。我同意同一事务中的两个语句可以返回不同的数据集,但返回带有重复记录的相同数据集听起来很疯狂。
据我所知,只有 MS SQL Server 有这种行为。
如果它符合ANSI SQL 标准定义的“Read Committed”隔离级别,请证明或反驳。
我正在使用 MSSQL 2008。
我的 INSERT 语句如下:
INSERT INTO [DB1].[dbo].[SpotArtSong](ID)
SELECT SNG.S_ID
FROM [DB1].[dbo].[SpotArtSong] SPOT
INNER JOIN [DB2].[dbo].[nt-art] ART
ON ART.Artist_Name LIKE SPOT.[Artist]+'%'
INNER JOIN [DB2].[dbo].[nt-sng] SNG
ON ART.Artist_ID = SNG.Artist_ID
AND left(SNG.SONG_TITLE,10) = left(SPOT.[Song],10)
WHERE spot.BDSID is NULL
Run Code Online (Sandbox Code Playgroud)
[DB1].[dbo].[SpotArtSong] 上的 [ID] 列有一些我试图替换的空值。我找到了替换项,在查看完整的列结果时,我对从 SNG.S_ID 返回的搜索结果感到满意。我正在尝试将该一列插入到 [DB1].[dbo].[SpotArtSong] 上的一列中。
本质上,我将一些数据报废到 [DB1].[dbo].[SpotArtSong] 中,并将其与 [DB2].[dbo].[nt-art] (ART) 和 [DB2] 之间的一些现有生产数据进行匹配.[dbo].[nt-sng] (SNG)。我知道 ART 和 SNG 中的数据是正确的,我正在将其与 SPOT 中报废的数据相关联
失败声明说:
Cannot insert the value NULL into column 'Artist', table
'DB1.dbo.SpotArtSong'; column does not allow nulls. INSERT
fails.
The …Run Code Online (Sandbox Code Playgroud) 关于 SQLOS 的执行模型(RUNNING 状态、RUNNABLE 队列、WAITER 列表),当当前正在进行 RAM 中页面的逻辑读取时,任务的状态是什么?
如果是 WAITER 列表,最流行的等待类型是什么?
我可以以某种方式测量此类操作所需的时间吗?
我知道很多逻辑读取会减慢您的查询速度,很多表/索引扫描(已经位于缓冲池中)会减慢您的查询速度 - 我只想知道它们如何出现在统计信息/dmv 中或如何将其与其他数据区分开来“经典”等待类型。
我正在使用此代码来混合日期和时间以将其用作唯一 ID
DateTime.Now.ToString("yyyyMMddHHmmssfffff")
Run Code Online (Sandbox Code Playgroud)
在 SQL Server 2017 中,我很困惑我可以使用哪种数据类型的最佳最小大小来存储此字符串。
最好的最小数据类型是什么:bigint,timestamp或varchar(19)?
如果将 Ola Hallengren 索引维护解决方案安装到已对多个索引应用了压缩的服务器上,脚本在重建相应索引时是否会遵守当前的压缩级别?
我目前正在 SQL Server 中处理下表
Table: order_status_logs
log_id INT NOT NULL IDENTITY(1,1)
order_id INT NOT NULL
status_id INT NOT NULL
log_date DATE NOT NULL
expected_by DATE NULL
Run Code Online (Sandbox Code Playgroud)
在此status_id列的表中,可能有以下值:
[1] - Pending
[2] - Ordered
[3] - Backordered
[4] - Received
Run Code Online (Sandbox Code Playgroud)
我想设置我的表,以便在尝试创建新记录时,如果不等于 4 ,expected_by则从NULL到 。基本上除非已收到订单,否则该表将始终需要该列的数据。NOT NULLstatus_idexpected_by
可以用 a 来做到这一点CONSTRAINT吗?或者这是我需要通过返回错误消息的程序或如果我不提供该列数据的内容来执行的操作?
正如标题所述,我有一个递归 CTE,当我更改 WHERE 子句中的运算符时,即使只有两行数据,它也会爆炸。
CREATE TABLE #Recursion
(Parent varchar(10), Child varchar(10), TopDate datetime)
INSERT INTO #Recursion (Parent, Child, TopDate)
VALUES
('00003137', '00003137', '2018-08-31'),
('04536347', '00003137', '2017-02-28'),
('05458040', '05458040', '9999-12-31'),
('00269705',' 05458040',' 9999-12-31')
;WITH
Parent AS
( SELECT parent
, child
, 1 as sort
, TopDate
FROM #Recursion
WHERE parent = child
UNION ALL
SELECT s.parent
, d.child
, d.sort + 1
, s.TopDate
FROM Parent as d
JOIN #Recursion s
ON s.child= d.parent
WHERE s.TopDate < d.TopDate
)
SELECT …Run Code Online (Sandbox Code Playgroud) sql-server ×10
constraint ×1
datatypes ×1
network ×1
performance ×1
sql-standard ×1
t-sql ×1
tcpip ×1
timestamp ×1
waits ×1