是否可以在sql 2000中创建复合键
code id
abc 1
abc 2
abc 3
def 1
def 2
ghi 1
其中id在每次更改代码时重新开始计数。我需要通过创建表或其他SELECT语句技巧来使编号完全相同。
如何在sql server 2000中执行此操作
需要查询帮助
答案 0 :(得分:2)
这是在运行时检索此数据的一种方法,无需将其实际存储在表中,这非常难以尝试和维护。我在这里使用#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;
答案 1 :(得分:0)
你可以试试这个
INSERT INTO TABLENAME (code, id) VALUES( 'code',
(Select ISNULL(MAX(id), 0) FROM TableName where code = 'code')+1)