我有两个表都包含“ callid,callnumber,callduration”。现在我想获得一个具有相同callnumber的呼叫,而callduration大于给定值。

Select a.callnumber
         , b.callnumber
      from table a
      INNER JOIN table b ON (    a.callnumber = b.callnumber
                       AND a.callduration-b.callduration > value );


但这会返回满足条件的多个结果,而我只希望通话时间差最小。

最佳答案

原始sql中的联接条件和口头解释不匹配,因此这是两个版本:持续时间高于给定值,而持续时间则相差大于给定值:

v1:

    Select a.callnumber
         , min (a.callduration-b.callduration)  mindiff
      from table a
INNER JOIN table b ON (    a.callnumber = b.callnumber
                       AND a.callduration > value
                       AND b.callduration > value        )
  group by a.callnumber
         ;


v2:

    Select a.callnumber
         , min (a.callduration-b.callduration)  mindiff
      from table a
INNER JOIN table b ON (    a.callnumber = b.callnumber
                       AND a.callduration-b.callduration > value )
  group by a.callnumber
         ;

关于mysql - 如何使用联接根据表中的特定条件仅选择不同的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18654763/

10-11 03:32