如何在MariaDB中选定的行行的帮助下更新列值?

时间:2014-12-09 06:32:35

标签: mysql sql-update mariadb

我是MariaDB的新手。

我有一张桌子。每行都有自己的有效性。

CREATE TABLE `tariff_table` (
  `transportation_id` int(11) NOT NULL AUTO_INCREMENT,
  `transporter` varchar(300) NOT NULL,
  `valid_upto` date NOT NULL,
  `expired_status` int(11) NOT NULL DEFAULT '0',
  `status` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`transportation_id`)
  )

表格结果:

tariff_id || transporter || valid_upto || expired_status || status   
------------------------------------------------------------------
1         || Raj         || 2014-12-08 ||             0  ||     0
2         || Ram         || 2015-01-10 ||             0  ||     0
3         || Mani        || 2014-03-06 ||             0  ||     0
4         || Mano        || 2015-04-15 ||             0  ||     0

我的要求是,如何使用选择查询更新过期状态。

select tariff_id from tariff_table where valid_upto <= DATE(now());

选择查询返回2行。

tariff_id
---------
1
3

id 的帮助下,我需要按照以下方式进行更新。

我需要以下结果。

tariff_id || transporter || valid_upto || expired_status || status   
------------------------------------------------------------------
1         || Raj         || 2014-12-08 ||             1  ||     0
3         || Mani        || 2014-03-06 ||             1  ||     0   

帮帮我。

2 个答案:

答案 0 :(得分:3)

您可以使用UPDATE语句,如下所示:

UPDATE `tariff_table`
SET `expired_status` = 1
WHERE valid_upto <= DATE(now());

答案 1 :(得分:2)

使用IN关键字。

UPDATE tariff_table SET expired_status = 1 WHERE tariff_id 
IN(select tariff_id from tariff_table where valid_upto <= DATE(now()))

OR

UPDATE tariff_table SET expired_status = 1 WHERE valid_upto <= DATE(now())