Update command with sub query
/*
mysql> UPDATE Articles
-> SET ArticleTitle='The Way of Zen', Copyright=1957
-> WHERE ArticleID=
-> (
-> SELECT ab.ArticleID
-> FROM Authors AS a, AuthorArticle AS ab
-> WHERE a.AuthID=ab.AuthID AND a.AuthorLastName='Yin'
-> );
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
*/
Drop table Articles;
Drop table Authors;
Drop table AuthorArticle;
Drop table ArticleOrders;
CREATE TABLE Articles (
ArticleID SMALLINT NOT NULL PRIMARY KEY,
ArticleTitle VARCHAR(60) NOT NULL,
Copyright YEAR NOT NULL
)
ENGINE=INNODB;
INSERT INTO Articles VALUES (12786, 'How write a paper', 1934),
(13331, 'Publish a paper', 1919),
(14356, 'Sell a paper', 1966),
(15729, 'Buy a paper', 1932),
(16284, 'Conferences', 1996),
(17695, 'Journal', 1980),
(19264, 'Information', 1992),
(19354, 'AI', 1993);
CREATE TABLE Authors (
AuthID SMALLINT NOT NULL PRIMARY KEY,
AuthorFirstName VARCHAR(20),
AuthorMiddleName VARCHAR(20),
AuthorLastName VARCHAR(20)
)
ENGINE=INNODB;
INSERT INTO Authors VALUES (1006, 'Henry', 'S.', 'Thompson'),
(1007, 'Jason', 'Carol', 'Oak'),
(1008, 'James', NULL, 'Elk'),
(1009, 'Tom', 'M', 'Ride'),
(1010, 'Jack', 'K', 'Ken'),
(1011, 'Mary', 'G.', 'Lee'),
(1012, 'Annie', NULL, 'Peng'),
(1013, 'Alan', NULL, 'Wang'),
(1014, 'Nelson', NULL, 'Yin');
CREATE TABLE AuthorArticle (
AuthID SMALLINT NOT NULL,
ArticleID SMALLINT NOT NULL,
PRIMARY KEY (AuthID, ArticleID),
FOREIGN KEY (AuthID) REFERENCES Authors (AuthID),
FOREIGN KEY (ArticleID) REFERENCES Articles (ArticleID)
)
ENGINE=INNODB;
INSERT INTO AuthorArticle VALUES (1006, 14356),
(1008, 15729),
(1009, 12786),
(1010, 17695),
(1011, 15729),
(1012, 19264),
(1012, 19354),
(1014, 16284);
CREATE TABLE ArticleOrders
(
OrderID SMALLINT NOT NULL,
ArticleID SMALLINT NOT NULL,
Quantity SMALLINT NOT NULL,
PRIMARY KEY (OrderID, ArticleID),
FOREIGN KEY (ArticleID) REFERENCES Articles (ArticleID)
)
ENGINE=INNODB;
INSERT INTO ArticleOrders VALUES (101, 13331, 1),
(101, 12786, 1),
(101, 16284, 2),
(102, 19354, 1),
(102, 15729, 3),
(103, 12786, 2),
(103, 19264, 1),
(103, 13331, 1),
(103, 14356, 2),
(104, 19354, 1),
(105, 15729, 1),
(105, 14356, 2),
(106, 16284, 2),
(106, 13331, 1),
(107, 12786, 3),
(108, 19354, 1),
(108, 16284, 4),
(109, 15729, 1),
(110, 13331, 2),
(110, 12786, 2),
(110, 14356, 2),
(111, 14356, 2);
UPDATE Articles
SET ArticleTitle='The Way of Zen', Copyright=1957
WHERE ArticleID=
(
SELECT ab.ArticleID
FROM Authors AS a, AuthorArticle AS ab
WHERE a.AuthID=ab.AuthID AND a.AuthorLastName='Yin'
);
Related examples in the same category