我的情况如下(SQLfiddle)给出:SQLite的更新多条记录与不同的值由查询
我有两个表People
和Scores
,他们看起来是这样的:
CREATE TABLE People
(
name TEXT,
minScore INTEGER,
maxScore INTEGER,
FOREIGN KEY (minScore) REFERENCES B(rowid),
FOREIGN KEY (maxScore) REFERENCES B(rowid)
);
INSERT INTO People (name) VALUES ('Terry');
INSERT INTO People (name) VALUES ('Bob');
CREATE TABLE Scores
(
nameID INTEGER,
score INTEGER,
FOREIGN KEY (nameID) REFERENCES A(rowid)
);
INSERT INTO Scores (nameID, score) VALUES (1, 10);
INSERT INTO Scores (nameID, score) VALUES (1, 8);
INSERT INTO Scores (nameID, score) VALUES (1, 5);
INSERT INTO Scores (nameID, score) VALUES (2, 12);
INSERT INTO Scores (nameID, score) VALUES (2, 8);
INSERT INTO Scores (nameID, score) VALUES (2, 2);
我想更新People
表以包含其minScore
和maxScore
的rowID
。我怎么做?
目的:
Terry | 5 | 10
Bob | 2 | 12
这是我曾尝试:
CREATE VIEW minScores
AS
SELECT Scores.rowid AS scoreID, Scores.nameID AS nameID
FROM Scores
WHERE score IN (SELECT MIN(score)
FROM Scores AS Scores2
GROUP BY Scores2.nameID);
UPDATE People
SET minScore = (SELECT scoreID FROM minScores)
WHERE People.rowid IN (SELECT nameID FROM minScores)
刚刚填充表的最后一个最小值。
(我不得不使用一个观点,因为我无法了解如何使用工作...)
谢谢你为编辑@CL。这读起来好多了。 – NE5534