在不同的表中减去2个细胞

时间:2017-07-25 08:58:54

标签: mysql

我有一个非常简单的问题,但我不知道会出现什么问题。我试图减去2个int值,一个来自czasy.voice,另一个来自webrtc.rozlaczenie。我想将结果保存在一个减法单元格中。我有疑问:

update czasy set voice = ((select voice from czasy where idu = "2") - select rozlaczenie from webrtc where handshake = "a3u8duwexwf") where idu = "2"

每次我遇到语法错误时,两个选项都可以单独运行并给我 第一次选择21次,第二次选择4次,所以在查询后我应该在czasy.voice中得到17

2 个答案:

答案 0 :(得分:1)

我认为你应该从握手中接近:

UPDATE webrtc
JOIN czasy ON  czasy.idu = webrtc.idu
SET czasy.voice = czasy.voice - webrtc.rozlaczenie
WHERE webrtc.handshake = 'a3u8duwexwf';

说明:

首先我们创建一个宽表,连接webrtc表和czasy表。我在这两个表中都使用了idu列。

您是否会在SELECT查询中执行此操作,可以看到所有列。 但现在我们用它来更新。 可以访问任何列。 Forexampe SET webrtc.foo = 12, czasy.bar = 42

但当然也像SET czasy.foo = webrtc.bar -12

这样的计算

由于给定握手的记录具有值为2的idu,很明显czasy的连接记录也有idu 2

答案 1 :(得分:0)

您已忘记在select rozlaczenie部分周围打开括号:

UPDATE czasy
   SET voice = (
         (SELECT voice       FROM czasy  WHERE idu = "2") -
         (SELECT rozlaczenie FROM webrtc WHERE handshake = "a3u8duwexwf")
       )
 WHERE idu = "2"