首先将两列相加后减去两列

时间:2013-07-27 08:33:44

标签: mysql sql database subtraction

我正在学习SQL,我想在我的网页中实现一个查询有点麻烦。我在自己的服务器上托管我的网页,并使用MySQL Workbench ver。 5.2.47CE(最新)。现在要创建我的网页,我正在使用Adobe Dreamweaver CS6。

我想要做的是在一起添加2列并从另一列中减去该总数。 A - ( B + C ) = 'result'

这是基于A = TOTAL DEATHS和B + C = TOTAL KILLS的游戏。如果我减去这两个,我最终会得到全部自杀。

这就是我想出来的......

SELECT
  (SELECT SUM(is_dead)
   FROM survivor
   WHERE (is_dead=1)
  )-
  ((SELECT SUM(bandit_kills)
     FROM survivor
    ) +
    (SELECT SUM(survivor_kills)
     FROM survivor)
   ) AS SUICIDES

现在,当我在MySQL Workbench中运行此查询时,它可以工作!我收到了正确答案!

因此,我正确复制了代码,并在Dreamweaver CS6中使用SQL查询创建了新的记录集。当我单击创建新记录集中的TEST按钮时,它返回正确的值,一切似乎都通过了TEST。我单击“确定”以保存新记录集。

这是错误发生的地方。当我选择新的RECORDSET插入表格时会发出此错误。

MySQL Error#: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')) AS SUICIDES 

第1行的0 = 1'

3 个答案:

答案 0 :(得分:2)

看起来Dreamwaver会以某种方式重写您的查询,以便附加此WHERE 0 = 1。如果在SELECT - 子句之后直接附加,则显然是SQL语法错误。

假设您的is_dead列只有值0和1,您可以更容易地进行数学运算,并使用一个from子句来引导Dreamwaver使用正确的语法:

SELECT SUM(is_dead) - ( SUM(bandit_kills) + SUM(survivor_kills) )
FROM survivor

仍然没有解释,为什么附加WHERE 0 = 1。 请参阅http://sqlfiddle.com/#!2/336f4/2了解

答案 1 :(得分:0)

为什么所有这些子查询?你应该很容易就是这样。

      SELECT SUM(is_dead)-( SUM(bandit_kills)+ SUM(survivor_kills)) AS SUICIDES 
      FROM survivor   WHERE is_dead=1

答案 2 :(得分:0)

谢谢,这与我正在寻找的事情相矛盾......

查询

SELECT SUM(is_dead)
FROM survivor

给我表is_dead中所有玩家的总和值为1(1死了)

非常感谢你......