我有两个表,apromotion table
和a 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 table
。在执行此操作时,我只想选择在两列中具有唯一值的记录,这些记录具有theprizename
和the cost
。之后,我将删除这些列promotion
。
现在我有以下sql语句
INSERT INTO prize(PRIZEID, COST, PRIZENAME)
SELECT r.PRIZEID, r.COST, r.PRIZENAME
FROM PROMOTION r;
但这会将所有记录插入prize table
。我知道我可以用不同的关键字选择,选择的唯一实例cost
和prizename
,但在我的情况下,prizeid
将永远是独特的,因为distinct
关键字适用于所有列在SELECT子句中它不会帮助。
提前致谢!
您只需PRIZEID
要用新值替换值即可。因为听起来您当前在PROMOTION
表上有重复项
首先,将所有不同的PRIZENAME
s和COST
s添加到新PRIZE
表中:
INSERT INTO prize(PRIZEID, COST, PRIZENAME)
SELECT DISTINCT (SELECT MAX(PRIZEID)+1 FROM PRIZE), r.COST, r.PRIZENAME
FROM PROMOTION r;
然后PROMOTION
使用新的更新您的s表PRIZEID
UPDATE PROMOTION R
SET R.PRIZEID =
(SELECT P.PRIZEID
FROM PRIZE
WHERE P.PRIZENAME=R.PRIZENAME
AND P.COST=R.COST);
然后,我认为您可以从那里安全地从PROMOTION
s表中删除列
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句