【问题标题】:error problem with 1582 Incorrect parameter count in the call to native function 'ISNULL' [closed]1582错误问题调用本机函数'ISNULL'时参数计数不正确[关闭]
【发布时间】:2020-05-31 20:22:37
【问题描述】:

我有 2 个表,一个(访问)和另一个(患者)与 mysql(患者)的关系是 PK 作为患者.pid 和访问.pid 作为索引 我想在我的 vb.net 应用程序中使用代码来获取最后的日期时间记录,以检查患者是否仍在医院内入院或出院 到目前为止,我在你们的帮助下有了这段代码

SELECT a.pid,MAX(ISNULL(b.sdat,'1901-01-01')),MAX(ISNULL(b.edat,'1901-01-01')) from patients a left join visits b on a.pid=b.pid Where ddatediff(now(),b.edat) <=365 group by a.pid

但是当我使用 php myadmin 或其他应用程序在 sql builder 中执行时,我得到了错误 (1582 - 调用本机函数“ISNULL”时参数计数不正确) 我试图找出错误原因,但直到现在都没有运气

【问题讨论】:

  • ISNULL文档 说..?您可能想改用 COALESCE 或 IFNULL。请参阅相应的文档 - 有人编写了它,因此请尊重他们的努力。

标签: mysql sql max left-join sql-null


【解决方案1】:

MySQL's ISNULL() 是一个比较函数,它接受一个参数,如果是NULL,则返回1。我认为您的意思是IFNULL() - 或更标准的COALESCE()

我还建议将检查移到聚合函数之外,以提高效率:

COALESCE(MAX(b.sdat),'1901-01-01'),
COALESCE(MAX(b.edat),'1901-01-01')

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2021-07-02
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多