私はあなたがこのようなものから始めることができると思います。 最後に、チェック後(とにかく更新する前にテーブルをバックアップする)、tableAからCATEGORY列を削除し、必要に応じてCATEGORY_ID列の名前を変更することができます。 したい場合は、開始する前に、あなたは後で使用するためのチェックを行うことができます(末尾参照):semplicity用
SELECT CATEGORY, COUNT(*) AS RC
FROM TABLEA
GROUP BY CATEGORY;
サンプルスクリプト
CREATE TABLE TABLEA (ID INT, CATEGORY VARCHAR(20), DATE_A DATETIME);
CREATE TABLE TABLEB (ID INT, CATEGORY VARCHAR(20));
INSERT INTO TABLEA VALUES (1,'abc', GETDATE());
INSERT INTO TABLEA VALUES (2,'cde', GETDATE());
INSERT INTO TABLEA VALUES (3,'cde', GETDATE());
INSERT INTO TABLEA VALUES (4,'abc', GETDATE());
INSERT INTO TABLEA VALUES (5,'abc', GETDATE());
INSERT INTO TABLEA VALUES (6,'fgh', GETDATE());
INSERT INTO TABLEA VALUES (7,'zzz', GETDATE());
INSERT INTO TABLEB VALUES (100,'abc');
INSERT INTO TABLEB VALUES (200,'cde');
INSERT INTO TABLEB VALUES (300,'fgh');
SELECT * FROM TABLEA;
ALTER TABLE TABLEA ADD CATEGORY_ID INT;
UPDATE A SET CATEGORY_ID = B.ID
FROM TABLEA A
LEFT JOIN TABLEB B ON A.CATEGORY = B.CATEGORY;
--CREATE INDEX TABLEA_CATID ON TABLEA (CATEGORY_ID);
SELECT CATEGORY_ID, COUNT(*) AS RC
FROM TABLEA
GROUP BY CATEGORY_ID;
、私はPKを追加しませんでした(しかしあなたが知っているように、彼らは "必要"です)。 CATEGORY_IDのTABLEAにFK制約を定義することをお勧めします。
あなたは列が数値データのみを持っていることは確かか?あなたがそれを許容することができれば、あなたが照会するときこれを回避するだけで、ここでオプションになるかもしれません。 –
MySQLまたはMS SQL Serverを使用していますか?関与していない製品にはタグを付けないでください。 – jarlh
@jarlh Microsoft SQL Server、間違ったタグが間違っています。 –