SQL - 仅当子查询不为空时更新
SQL - update only if subquery is not null
只有当 car_log 中有没有状态 'test' 的条目时我才想更新 last_test_date 我真的认为这段代码很糟糕,有什么办法可以更好地编写它?
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获取最后查询的行数,这样就不会重复select
...
WHERE @@ROWCOUNT > 0;
更新连接语法将使您的语句更加清晰:
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
只有当 car_log 中有没有状态 'test' 的条目时我才想更新 last_test_date 我真的认为这段代码很糟糕,有什么办法可以更好地编写它?
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获取最后查询的行数,这样就不会重复select
...
WHERE @@ROWCOUNT > 0;
更新连接语法将使您的语句更加清晰:
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