我有一个非常简单的问题,但我不知道会出现什么问题。我试图减去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
答案 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"