Mysql SQL-仅当子查询不为null时更新

Mysql SQL-仅当子查询不为null时更新,mysql,sql-update,Mysql,Sql Update,我只想在汽车日志中有没有状态“test”的条目时才更新上次测试日期,我真的认为这段代码很糟糕,有没有办法写得更好 UPDATE car SET last_test_date = (SELECT date FROM car_log WHERE car_log.car_id = car.id AND car_log.status != 'test' ORDER BY date DESC LIMIT 0,1) WHERE (SELECT COUNT(*) FROM car_log WHERE car

我只想在汽车日志中有没有状态“test”的条目时才更新上次测试日期,我真的认为这段代码很糟糕,有没有办法写得更好

UPDATE car SET last_test_date = 
(SELECT date FROM car_log WHERE car_log.car_id = car.id AND
car_log.status != 'test' ORDER BY date DESC LIMIT 0,1)
WHERE (SELECT COUNT(*) FROM car_log WHERE car_log_id = client.id AND
car_log.status != 'test') > 0;

使用@@ROWCOUNT获取最后一次查询行数,这样您就不会重复选择

...
WHERE @@ROWCOUNT > 0;

update join语法将使您的语句更加清晰:

UPDATE car 
JOIN   (SELECT car_id, MAX(date) AS max_date
        FROM   car_log
        WHERE  car_log.status != 'test') ON car_log.car_id = car.id AND
SET    last_test_date = max_date