我有以下查询:
UPDATE (Select * FROM
(SELECT A.messung,A.Sensor, A.wert FROM datenmatrix as A
LEFT JOIN (Select B.sensor FROM datenmatrix as B group by sensor) as C
on A.sensor=C.sensor where A.Sensor=1 order by Sensor) AS P)AS V
SET V.wert=1 where V.messung=1 and V.Sensor=1;
我收到错误:
"ERROR 1288 (HY000): The target table V of the UPDATE is not updatable"
如何更改查询以使其有效? 我需要使用更新吗?或者我可以使用其他东西来更改表格的列吗?
先谢谢你
答案 0 :(得分:1)
根据OP的评论更新
不,在sql中,您只能使用update
语句直接在表中更改字段的值。如果要更改查询输出中的某些值,则需要在select本身中执行这些计算。
不过,我认为你的查询过于复杂。我没有看到使用子查询的任何意义,甚至连接都没有。在(Select B.sensor FROM datenmatrix as B group by sensor) as C
子查询中,您只需从sensor
表中选择不同的datenmatrix
值,并希望再次将其加入datenmatrix
表中。这没有任何意义。我相信以下查询就是您所需要的:
SELECT messung, sensor, if(messung=1,1,wert) as wert
FROM datenmatrix
WHERE Sensor=1;
答案 1 :(得分:0)
我有一个问题的解决方案我现在在选择中使用IF,这样如果messung = 1且sensor = 1,则wert = 1的值为。 查询看起来像这样
(Select messung, Sensor ,IF(messung=1 and Sensor=1,1,wert)as wert FROM
(SELECT A.messung,A.Sensor, A.wert FROM datenmatrix as A left join
(Select B.sensor FROM datenmatrix as B group by sensor) as C
on A.sensor=C.sensor where A.Sensor=1 order by Sensor) AS P);