簡體   English   中英

SQL-僅在子查詢不為null時更新

[英]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獲取最后一個查詢行數,這樣就不會重復選擇

...
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM