如果我想代表特定产品ID从表中计算行数(列:状态),那么在具有相同产品的另一个表的每一行上使用这些计数来更新第二个表行(列:什么是确切的query.table 2有一个表1的外键我尝试了很多,这是我迄今为止所做的,但仍然失败了:
a b
1 NA NA
2 2 3
3 4 5
编辑:
有两个表table1和表2
例如
result
我想要执行的是代表car_id计算表2中所有汽车的状态,如果它的status = active小于1,则我想将表1的状态更改为活动状态。如果您在表2中看到数据car id = 1的status = active小于1,则表1中car_id的状态现在应从保留更改为活动状态。我希望这可能会给你一个暗示我想要实现的目标。
答案 0 :(得分:0)
希望它对你有用。请参考以下查询。
UPDATE car_detail SET car_detail.`status`='active'
WHERE car_detail.car_id=(
SELECT car_reservation_detail.car_ID FROM car_reservation_detail
WHERE car_reservation_detail.status='deactive'
GROUP BY car_reservation_detail.car_ID
HAVING COUNT(car_reservation_detail.car_ID)<1
)
答案 1 :(得分:0)
您正在寻找的是一个查询,它本质上是检查您是否有任何行&#34;活跃&#34;因此,您可以在更新语句中使用左连接,以确保没有状态为&#34; active&#34;。
以下查询适用于您提供的示例数据集。
UPDATE table_1 t1
LEFT JOIN table_2 t2 on t1.car_id = t2.car_id
AND t2.status = 'active'
SET t1.status = 'active'
WHERE t2.res_id is null and t1.status != 'active';
答案 2 :(得分:0)
感谢您帮助@Amardeep Verma您的回答给了我一个管理查询的提示,这就是它的工作原理
UPDATE car_detail c SET c.`status`='active'
WHERE c.status='reserved' AND c.car_detail_id IN(SELECT cr.car_detail_id FROM car_reservation_detail cr
WHERE cr.status='deactive'AND cr.car_detail_id NOT IN (SELECT cr.car_detail_id from car_reservation_detail cr
WHERE cr.status='active')
GROUP BY cr.car_detail_id)