【问题标题】:Simple SQL query to select a max用于选择最大值的简单 SQL 查询
【发布时间】:2013-07-06 20:23:36
【问题描述】:

我需要一些关于 SQL 查询的帮助。

我有两张桌子:tbltranstbltrans_temp。我想选择 tbltrans_temp max(tbltrans_temp.transid) 的最大值。

如果tbltrans_temp 为空并且返回null,那么它应该取tbltrans.transid 的最大值。

如果两个表都是空的,它应该只返回 0。

我尝试了以下方法,但没有得到预期的结果。

select ifnull(ifnull(max(t1.transid), max(t2.transid)), 0)  
from tbltrans_temp t1 
left join tbltrans as t2

【问题讨论】:

  • 这是 SQLServer 还是 SQLite?
  • @MarkBannister -- 我猜 SQLite 因为 SQL Server 不支持IFNULL。但是,两者都应该支持COALESCE

标签: sql sql-server sqlite join


【解决方案1】:

这可以使用COALESCE:

select coalesce(maxtemptrans, maxtrans, 0)
from (select max(transid) maxtemptrans from tbltrans_temp) t, 
    (select max(transid) maxtrans from tbltrans ) t2 

【讨论】:

    【解决方案2】:

    试试:

    select coalesce((select max(transid) from tbltrans_temp),
                    (select max(transid) from tbltrans),
                    0)
    

    【讨论】:

      【解决方案3】:

      你很接近——只需删除连接:

      select ifnull(ifnull(max(t1.transid), max(t2.transid)),0)  
      from tbltrans_temp t1, tbltrans t2
      

      http://sqlfiddle.com/#!5/2897f/1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-22
        • 1970-01-01
        • 2013-10-26
        • 1970-01-01
        • 2015-02-03
        • 2014-08-16
        • 2010-09-07
        相关资源
        最近更新 更多