【问题标题】:Anything wrong with this MySQL syntax?这个 MySQL 语法有什么问题吗?
【发布时间】:2012-06-08 15:10:31
【问题描述】:
select 
    (`Setup` + `run` + `cleanup`) / `QNTY`
from 
    the_table 
where 
    date_field >= "2012-01-01" and
    Num = 4;

每次我在 MySQL 工作台中执行此查询时,工作台应用程序都会立即崩溃。好像以前做过很多次,不知道是什么问题。

我唯一能想到的是空值的问题。有时 (Setup + run + cleanup) 会返回 null,有时 QNTY 也会返回 null。

我刚查了一下,这个查询也导致了崩溃:

select 
    (`Setup` + `run` + `cleanup`) / `QNTY`
from 
    the_table
where 
    date_field >= "2012-01-01" and
    (`Setup` + `run` + `cleanup`) is not null and
    `QNTY` is not null and
    `QNTY` != 0 and
    Num = 4

谢谢。

【问题讨论】:

  • 是的,我刚刚检查过,它仍然崩溃
  • 我通过 PHP MyAdmin 界面快速测试了这一点。数学工作得很好。我在加法部分尝试了一个空值,在除法部分尝试了一个空值,结果只是空值。也许这是一个工作台错误?
  • 也许你应该看看这个; dev.mysql.com/doc/refman/5.5/en/…
  • 从终端启动工作台并在崩溃时查看日志。它可能会给出一些提示。
  • 如果 QNTY 非常非常小,结果会非常非常大。 QNTY 的最小值是多少?顺便说一句,如果 QNTY 是一个 int,请忘记这个原因

标签: mysql mysql-workbench


【解决方案1】:

我会试试的

select 
    (coalesce(Setup, 0) + coalesce(run, 0) + coalesce(cleanup, 0)) / QNTY
from 
    the_table
where 
    date_field >= '2012-01-01' and
    Num = 4 and
    coalesce(QNTY, 0) <>0

【讨论】:

  • 用这个语法还是crash,一定是Workbench的bug
【解决方案2】:

看起来像 cmets 中 Darkwater23 建议的工作台中的错误。我在旧的 MySQL 查询浏览器上进行了尝试,它在使用 null 和 zeros 以及所有内容时执行得很好。

【讨论】:

    猜你喜欢
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多