简体   繁体   中英

how to update a sql database table based on the condition from another table in the same database

I have a two tables in a database.

table_1(device_ID, date,voltage)

table_2(device_ID,device_status)

I am trying to create an event to execute every 5 minutes.

What I am trying to achieve is, select device_ID from table_1 if there is no new data over the last 10 minutes and update the table_2, that means set device_status to 0.

How do i pass conditions between two tables?

BEGIN 
  select device_ID from table_1 where date =  DATE_SUB(NOW(), INTERVAL 10 Minutes);                          

//here i will get device_IDs if there was a data within last 10 minutes. 

//but i need device_ID if there were no data. 

//how to update table_2 based on the above condition?

END

You can use the results of your first query as a subquery to de-select rows (by using NOT IN ) for the UPDATE :

UPDATE table2
SET device_status = 0
WHERE device_ID NOT IN (select device_ID 
                        from table_1 
                        where date >  DATE_SUB(NOW(), INTERVAL 10 Minutes))

Note I think you probably want > , not = in your where condition in the subquery.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM