我正在学习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'
答案 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死了)
非常感谢你......