我需要删除大约5000万条记录(而不是整个表格),我搜索并找到了一些方法
这个查询做我想要的,我可以通过在a中存储子查询的结果来稍微优化它 #TempTable
我还可以做些什么?
到目前为止最快的查询:
CREATE TABLE #UserIDs ( UserId UNIQUEIDENTIFIER NOT NULL );
CREATE CLUSTERED INDEX myIndex ON #UserIDs (UserId)
INSERT INTO #UserIDs
SELECT UserId FROM TableX WHERE UserID IS NOT NULL;
INSERT INTO #UserIDs
SELECT UserID FROM TableY WHERE CreatorID IS NOT NULL;
DELETE TOP (10000)
FROM Users
WHERE
Email IS NULL
AND
(
(NOT EXISTS ( SELECT 1 FROM #UserIDs WHERE #UserIDs.UserId = Users.UserId ) )
)
DROP TABLE #UserIDs
Run Code Online (Sandbox Code Playgroud)

我用简单的单词搜索索引扫描对表扫描的真正好处,但仍然很困惑.比方说我有,
create table a(id int, id1 int, varchar(50) name)
Run Code Online (Sandbox Code Playgroud)
如果我选择,
select * from a where id1=1;
Run Code Online (Sandbox Code Playgroud)
它说表扫描,
如果我向id列添加索引并再次运行此查询,
select * from a where id1=1;
Run Code Online (Sandbox Code Playgroud)
它说索引扫描
更新:我不明白我会得到什么好处**其中id1 =**,因为索引是id.看这些图片,

和

更新:这认为这是一个重复的问题.请先阅读其他问题.我正在使用id1 =但另一个问题是使用select*,没有任何where语句.
我想创建一个存储过程来响应朋友请求,但这给了我一个语法错误
CREATE PROC RESPOND_REQUEST @id1 INTEGER,
@id2 INTEGER,
@reply BIT
AS
BEGIN
SELECT R
FROM Requests R
WHERE r.reciever_id = @id1
AND r.sender_id = @id2
SET R.reply = @reply
END
Run Code Online (Sandbox Code Playgroud) 在Sql中,我得到如下格式的结果。总共我有6列。第1行第6列中包含该值,第二行第5和第6行中包含该值。但是我需要检查每个单元格,如果上一列不包含该值,则意味着我需要在第一列中使用它。
实际结果
a b c d e f
1
1 2
1 2 3
Run Code Online (Sandbox Code Playgroud)
预期结果:-
a b c d e f
1
1 2
1 2 3
Run Code Online (Sandbox Code Playgroud)
请张贴一些好的答案(我正在使用SQL Server 2008-R2)
在C#中我们可以编写单个if语法:
string test;
int value=1;
test = value>=1 ? "is bigger or equal one" : "is less than one";
Run Code Online (Sandbox Code Playgroud)
SQL Server 2008 R2中的T-SQL有单一IF语法吗?
以下是以下的示例数据: -
emp doa
1 2014-01-01 00:00:00.000
1 2014-01-05 00:00:00.000
1 2014-01-08 00:00:00.000
1 2014-01-12 00:00:00.000
1 2014-01-15 00:00:00.000
2 2014-01-01 00:00:00.000
2 2014-01-05 00:00:00.000
2 2014-01-10 00:00:00.000
2 2014-01-12 00:00:00.000
2 2014-01-15 00:00:00.000
3 2014-01-01 00:00:00.000
3 2014-01-05 00:00:00.000
4 2014-01-10 00:00:00.000
4 2014-01-12 00:00:00.000
4 2014-01-15 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
doa - 分配项目的日期
要求是选择最接近今天的记录 - 给予过去日期更高的偏好 - 这将表明当前的分配.
预期结果如下─
emp doa
1 2014-01-08 00:00:00.000
2 2014-01-05 00:00:00.000
3 2014-01-05 00:00:00.000
4 2014-01-10 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
我有一些限制: -
我有一张桌子
PKID FID RESULT
======================
1 1 1
2 1 2
3 1 2
4 1 3
4 2 1
4 2 1
Run Code Online (Sandbox Code Playgroud)
我正在尝试设置一个约束,这样如果已存在FID = 1且RESULT = 3的记录,我就无法在表中插入另一条FID = 1的记录.
我试图创建这样的函数
CREATE FUNCTION MyCheck
(
-- Add the parameters for the function here
@FID int
)
RETURNS bit
AS
BEGIN
IF EXISTS (SELECT PKID FROM MyTable WHERE (RESULT= 3) AND (FID= @FID))
return 1
return 0
END
Run Code Online (Sandbox Code Playgroud)
但是当我使用这个函数创建约束时:
ALTER TABLE MyTable
WITH CHECK ADD CONSTRAINT CK_Code …Run Code Online (Sandbox Code Playgroud) 我从上次12小时开始上网,发现有太多用户正面临这个问题,但是没有人能够摆脱那个,我创建了一个JDialog,它有TextFields,我正在尝试从那些文本字段获取输入,并在DataBase中存储,但是Givi是以下异常.
Exception occurred during event dispatching:
Connection ok
Adnan
java.lang.NullPointerException
at srvrDataBaseClass.setPersonStatement(srvrDataBaseClass.java:90)
at srvrDataBaseClass.insertPerson(srvrDataBaseClass.java:71)
at EnrollmentForm.setPerson(EnrollmentForm.java:90)
Run Code Online (Sandbox Code Playgroud)
这是StackTrac指向的代码,
public void setPersonStatement(String nm,String fn,String cn,String add, byte[] fpt) {
String Sql = "INSERT INTO PERSON (NAME, FNAME, CNIC, ADDR, FPT) VALUES ( ?,?,?,?,?)";
try {
if(con==null){
System.out.println("Connection error"); <---------------- Connection is Not Closed
}
else {
System.out.println("Connection ok"); <------Connection ok
}
con.prepareStatement(Sql);
System.out.println(nm); <----- This is Line :90, But You can see its not Null, as the Value 'Adnan' is printed on …Run Code Online (Sandbox Code Playgroud) 在SQL Server 2008 R2中,我需要从字符串中提取字符50和60之间的所有内容.我在互联网上搜索了类似的功能,但没有真正找到可以解决问题的东西.
我可以使用以下公式在Excel上执行此操作: MID(A2, 50, 10)
我正在使用带有动态创建列的数据透视表来创建一个按月计算操作的报表.在动态查询中是一个涉及三列的CROSS APPLY.这导致我的总数增加了三倍.我目前正在攻击一个解决方案,我将计数除以3得到正确的答案.任何人都可以帮我提出一个更优雅的解决方案来解决这个问题吗?
编辑:我正在使用SQL Server 2008R2
鉴于此数据集(它实际上是一个视图,但我觉得在SO中重新创建整个模式并不明智):
CREATE TABLE vw_ActionsReport
([CID] int, [MitigationActionID] int, [Approved] int, [Status] varchar(11), [ChangedDate] datetime, [EntryDate] varchar(7), [STATE_ABBR] varchar(2), [STATE_NAME] varchar(11), [CENSUS_NAM] varchar(12), [CIS_NAME] varchar(21), [COUNTY_NAM] varchar(9), [CO_FIPS] int, [REGION] int, [ST_FIPS] int);
INSERT INTO vw_ActionsReport
([CID], [MitigationActionID], [Approved], [Status], [ChangedDate], [EntryDate], [STATE_ABBR], [STATE_NAME], [CENSUS_NAM], [CIS_NAME], [COUNTY_NAM], [CO_FIPS], [REGION], [ST_FIPS])
VALUES
(090069, 5475, 1, 'Identified', '2012-11-27 16:21:27', '11_2012', 'CT', 'CONNECTICUT', 'OLD SAYBROOK', 'OLD SAYBROOK, TOWN OF', 'MIDDLESEX', 09007, 01, 09),
(090069, 5476, 1, 'In Progress', '2012-11-27 …Run Code Online (Sandbox Code Playgroud) sql ×7
sql-server ×4
extract ×1
if-statement ×1
java ×1
pivot ×1
ranking ×1
sorting ×1
t-sql ×1