0

promotion tableaと aの 2 つのテーブルがありprize tableます。

CREATE TABLE PRIZE(
     PRIZEID INT NOT NULL PRIMARY KEY,
     COST DOUBLE NOT NULL,
     PRIZENAME VARCHAR(100) NOT NULL,
)

CREATE TABLE PROMOTION (
     PROMOTIONID    INTEGER NOT NULL,
     LEVEL  INTEGER NOT NULL,
     AMOUNT NOT NULL,
     COST   DOUBLE  NOT NULL    DEFAULT 0,
     PRIZENAME  VARCHAR(100)    NOT NULL    DEFAULT ' ',
     PRIZEID    INTEGER
) 

prize table現在空で、レコードを から にコピーしたいと考えてpromotion tableいますprize tableprizenameこれを行う際に、と の2 つの列に一意の値を持つレコードのみを選択したいと考えていますcostpromotion後でそれらの列を削除します。

現在、次のSQLステートメントがあります

INSERT INTO prize(PRIZEID, COST, PRIZENAME)
SELECT r.PRIZEID, r.COST, r.PRIZENAME 
FROM PROMOTION r;

しかし、これはすべてのレコードをに挿入しますprize table。selectでdistinctキーワードを使用してandの一意のインスタンスを選択できることを認識していますcostprizename、私の場合prizeidは常に一意であり、distinctキーワードはselect句のすべての列に適用されるため、役に立ちません。

前もって感謝します!

4

2 に答える 2

0

これにより、賞品の名前とコストに基づいて独自の賞品が獲得され、グループの最低の賞金が獲得されます。

INSERT INTO prize(PRIZEID, COST, PRIZENAME)
SELECT MIN(r.PRIZEID), r.COST, r.PRIZENAME 
FROM PROMOTION r
GROUP BY r.COST, r.PRIZENAME
;
于 2013-08-16T20:16:04.413 に答える