An UPDATE statement can be qualified by the use of the ORDER BY clause and the LIMIT clause.
mysql>
mysql> CREATE TABLE Books
-> (
-> BookID SMALLINT NOT NULL PRIMARY KEY,
-> BookName VARCHAR(40) NOT NULL,
-> InStock SMALLINT NOT NULL
-> )
-> ENGINE=INNODB;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql>
mysql> INSERT INTO Books
-> VALUES (101, 'C: Writing on Writing', 12),
-> (102, 'Oracle', 17),
-> (103, 'Opera', 23),
-> (104, 'Notebook', 32),
-> (105, 'Pascal', 6),
-> (106, 'One Hundred Years of Solitude', 28);
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql>
mysql> CREATE TABLE Orders
-> (
-> OrderID SMALLINT NOT NULL PRIMARY KEY,
-> BookID SMALLINT NOT NULL,
-> Quantity TINYINT (40) NOT NULL DEFAULT 1,
-> DateOrdered TIMESTAMP,
-> FOREIGN KEY (BookID) REFERENCES Books (BookID)
-> )
-> ENGINE=INNODB;
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> INSERT INTO Orders VALUES (1001, 103, 1, '2004-10-12 12:30:00'),
-> (1002, 101, 1, '2004-10-12 12:31:00'),
-> (1003, 103, 2, '2004-10-12 12:34:00'),
-> (1004, 104, 3, '2004-10-12 12:36:00'),
-> (1005, 102, 1, '2004-10-12 12:41:00'),
-> (1006, 103, 2, '2004-10-12 12:59:00'),
-> (1007, 101, 1, '2004-10-12 13:01:00'),
-> (1008, 103, 1, '2004-10-12 13:02:00'),
-> (1009, 102, 4, '2004-10-12 13:22:00'),
-> (1010, 101, 2, '2004-10-12 13:30:00'),
-> (1011, 103, 1, '2004-10-12 13:32:00');
Query OK, 11 rows affected (0.00 sec)
Records: 11 Duplicates: 0 Warnings: 0
mysql>
mysql> UPDATE Orders
-> SET Quantity=Quantity+1
-> WHERE BookID=103
-> ORDER BY DateOrdered DESC
-> LIMIT 5;
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5 Changed: 5 Warnings: 0
mysql>
mysql>
mysql> drop table Orders;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table books;
Query OK, 0 rows affected (0.00 sec)
Related examples in the same category