如何为每个id创建标识



是否可以在sql 2000 中创建复合密钥

code    id
abc      1
abc      2
abc      3
def      1
def      2
ghi      1

其中id在每次代码更改时重新启动计数。我需要通过创建一个表或其他SELECT语句技巧使编号与此完全相同。

如何在sqlserver2000中做到这一点

需要查询帮助

这里有一种在运行时检索这些数据的方法,而不必将其实际存储在表中,这在尝试和维护时非常麻烦。我在这里使用了一个#temp表,但你可以假装#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;

你可以试试这个

INSERT INTO TABLENAME (code, id) VALUES( 'code',
(Select ISNULL(MAX(id), 0) FROM TableName where code = 'code')+1)

最新更新