更新选择表

时间:2016-12-28 15:02:36

标签: mysql

我有以下查询:

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"

如何更改查询以使其有效? 我需要使用更新吗?或者我可以使用其他东西来更改表格的列吗?

先谢谢你

2 个答案:

答案 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);