0

我正在正确学习 SQL,但我想在我的网页中实现的查询有点麻烦。我在自己的服务器上托管我的网页,并使用 MySQL Workbench 版本。5.2.47CE(最新)。现在要创建我的网页,我使用的是 Adob​​e Dreamweaver CS6。

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

这是基于一个游戏,其中 A = 死亡总数,B+C = 死亡总数。如果我减去这两个,我最终会自杀。

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

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 

WHERE 0 = 1' 在第 1 行

4

3 回答 3

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玩转

于 2013-07-27T10:12:10.653 回答
0

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

      SELECT SUM(is_dead)-( SUM(bandit_kills)+ SUM(survivor_kills)) AS SUICIDES 
      FROM survivor   WHERE is_dead=1
于 2013-07-27T10:22:25.380 回答
0

谢谢矛盾,这就是我正在寻找的......

查询

SELECT SUM(is_dead)
FROM survivor

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

太感谢了...

于 2013-07-28T09:37:03.940 回答