Mega Code Archive

 
Categories / MySQL / Insert Delete Update
 

Update with limitation and calculation

/* mysql> select * from Orders; +---------+--------+----------+---------------------+ | OrderID | BookID | Quantity | DateOrdered         | +---------+--------+----------+---------------------+ |    1001 |    103 |        1 | 2004-01-12 12:30:00 | |    1002 |    101 |        1 | 2001-02-12 12:31:00 | |    1003 |    103 |        2 | 2002-03-12 12:34:00 | |    1004 |    104 |        3 | 2003-04-12 12:36:00 | |    1005 |    102 |        1 | 2004-05-12 12:41:00 | |    1006 |    103 |        2 | 2001-06-12 12:59:00 | |    1007 |    101 |        1 | 2002-07-12 13:01:00 | |    1008 |    103 |        1 | 2003-08-12 13:02:00 | |    1009 |    102 |        4 | 2004-09-12 13:22:00 | |    1010 |    101 |        2 | 2005-11-12 13:30:00 | |    1011 |    103 |        1 | 2006-12-12 13:32:00 | |    1012 |    105 |        1 | 2001-02-12 13:40:00 | |    1013 |    106 |        2 | 2002-04-12 13:44:00 | |    1014 |    103 |        1 | 2003-06-12 14:01:00 | |    1015 |    106 |        1 | 2005-01-12 14:05:00 | |    1016 |    104 |        2 | 2003-11-12 14:28:00 | |    1017 |    105 |        1 | 2002-03-12 14:31:00 | |    1018 |    102 |        1 | 2001-05-12 14:32:00 | |    1019 |    106 |        3 | 2003-07-12 14:49:00 | |    1020 |    103 |        1 | 2004-01-12 14:51:00 | +---------+--------+----------+---------------------+ 20 rows in set (0.01 sec) mysql> UPDATE Orders     -> SET Quantity=Quantity+1     -> WHERE BookID=103     -> ORDER BY DateOrdered DESC     -> LIMIT 5; Query OK, 5 rows affected (0.03 sec) Rows matched: 5  Changed: 5  Warnings: 0 mysql> select * from Orders; +---------+--------+----------+---------------------+ | OrderID | BookID | Quantity | DateOrdered         | +---------+--------+----------+---------------------+ |    1001 |    103 |        2 | 2005-10-09 08:51:26 | |    1002 |    101 |        1 | 2001-02-12 12:31:00 | |    1003 |    103 |        2 | 2002-03-12 12:34:00 | |    1004 |    104 |        3 | 2003-04-12 12:36:00 | |    1005 |    102 |        1 | 2004-05-12 12:41:00 | |    1006 |    103 |        2 | 2001-06-12 12:59:00 | |    1007 |    101 |        1 | 2002-07-12 13:01:00 | |    1008 |    103 |        2 | 2005-10-09 08:51:26 | |    1009 |    102 |        4 | 2004-09-12 13:22:00 | |    1010 |    101 |        2 | 2005-11-12 13:30:00 | |    1011 |    103 |        2 | 2005-10-09 08:51:26 | |    1012 |    105 |        1 | 2001-02-12 13:40:00 | |    1013 |    106 |        2 | 2002-04-12 13:44:00 | |    1014 |    103 |        2 | 2005-10-09 08:51:26 | |    1015 |    106 |        1 | 2005-01-12 14:05:00 | |    1016 |    104 |        2 | 2003-11-12 14:28:00 | |    1017 |    105 |        1 | 2002-03-12 14:31:00 | |    1018 |    102 |        1 | 2001-05-12 14:32:00 | |    1019 |    106 |        3 | 2003-07-12 14:49:00 | |    1020 |    103 |        2 | 2005-10-09 08:51:26 | +---------+--------+----------+---------------------+ 20 rows in set (0.00 sec) */ Drop table Orders; 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; INSERT INTO Orders VALUES (1001, 103, 1, '2004-01-12 12:30:00'),                           (1002, 101, 1, '2001-02-12 12:31:00'),                           (1003, 103, 2, '2002-03-12 12:34:00'),                           (1004, 104, 3, '2003-04-12 12:36:00'),                           (1005, 102, 1, '2004-05-12 12:41:00'),                           (1006, 103, 2, '2001-06-12 12:59:00'),                           (1007, 101, 1, '2002-07-12 13:01:00'),                           (1008, 103, 1, '2003-08-12 13:02:00'),                           (1009, 102, 4, '2004-09-12 13:22:00'),                           (1010, 101, 2, '2005-11-12 13:30:00'),                           (1011, 103, 1, '2006-12-12 13:32:00'),                           (1012, 105, 1, '2001-02-12 13:40:00'),                           (1013, 106, 2, '2002-04-12 13:44:00'),                           (1014, 103, 1, '2003-06-12 14:01:00'),                           (1015, 106, 1, '2005-01-12 14:05:00'),                           (1016, 104, 2, '2003-11-12 14:28:00'),                           (1017, 105, 1, '2002-03-12 14:31:00'),                           (1018, 102, 1, '2001-05-12 14:32:00'),                           (1019, 106, 3, '2003-07-12 14:49:00'),                           (1020, 103, 1, '2004-01-12 14:51:00'); select * from Orders; UPDATE Orders SET Quantity=Quantity+1 WHERE BookID=103 ORDER BY DateOrdered DESC LIMIT 5; select * from Orders;