mysql - SQL - 仅当子查询不为空时更新

标签 mysql sql-update

我只想在 car_log 中有没有状态“测试”的条目时更新 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;

关于mysql - SQL - 仅当子查询不为空时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30357325/

相关文章:

php - 使用 php 将数据插入/更新到 MySql 数据库中

mysql - 有没有办法组合这两个 MySQL 语句?

从其他表更新mysql表

php - php 中的文本框自动填充

java - 如何将数据库结果集加载到jeditorpane中

mysql - 从 bugzilla 数据库 (MySQL) 检索错误时出现 DjangoUnicodeDecodeError

java - 如何使用 JDBC 插入局部变量 MySQL

sql - 带有 INNER JOIN 的 Oracle 更新

sql - 通过 self 加入进行更新

MySQL REGEXP 仅匹配给定目录的子目录