Sql 如何为每个id创建标识
是否可以在sql 2000中创建复合键Sql 如何为每个id创建标识,sql,sql-server,sql-server-2000,Sql,Sql Server,Sql Server 2000,是否可以在sql 2000中创建复合键 code id abc 1 abc 2 abc 3 def 1 def 2 ghi 1 其中id在每次代码更改时重新启动计数。我需要通过创建一个表或其他SELECT语句技巧使编号与之完全相同 如何在SQLServer2000中执行此操作 需要查询帮助您可以试试这个 INSERT INTO TABLENAME (code, id) VALUES( 'code', (Select ISNULL
code id
abc 1
abc 2
abc 3
def 1
def 2
ghi 1
其中id在每次代码更改时重新启动计数。我需要通过创建一个表或其他SELECT语句技巧使编号与之完全相同
如何在SQLServer2000中执行此操作
需要查询帮助您可以试试这个
INSERT INTO TABLENAME (code, id) VALUES( 'code',
(Select ISNULL(MAX(id), 0) FROM TableName where code = 'code')+1)
这里有一种方法可以在运行时检索这些数据,而不必实际将其存储在表中,这对于尝试和维护来说非常麻烦。我在这里使用一个临时表,但你可以假装
\a
是你的永久表。按原样,这将支持多达256个副本。如果您需要更多,可以进行调整
CREATE TABLE #a(code VARCHAR(32));
INSERT #a SELECT 'abc'
UNION ALL SELECT 'abc'
UNION ALL SELECT 'abc'
UNION ALL SELECT 'def'
UNION ALL SELECT 'def'
UNION ALL SELECT 'ghi';
GO
SELECT x.code, id = y.number FROM
(
SELECT code, maxid = COUNT(*) FROM #a GROUP BY code
) AS x
CROSS JOIN
(
SELECT DISTINCT number FROM master..spt_values
WHERE number BETWEEN 1 AND 256
) AS y
WHERE x.maxid >= y.number;
DROP TABLE #a;
表中还有其他列吗,还是这一列?您应该期望的
code
的最大重复值是多少?你是想更新一个现有的表还是把这些信息放到一个新表中?@Aaron,没什么,我只是通过表单把数据输入表中。你真的需要把这些数据存储在表中吗?在运行时查询它是否更有意义,这样您就不必在每次更新、插入或删除行时重新计算整个表的数字了?