SQL查询的最大值和最小值

时间:2014-01-30 08:47:45

标签: mysql sql

我在sql查询中遇到了一些问题。

我有一个table table_name,其中包含以下字段:id,zip,size。此表中有3个条目,“zip”字段的条目是2001年,2005年,2009年,所有三个条目的“大小”值均为5。我希望根据我的搜索获得字段的最大值和最小值。

当我在2001年和2009年之间搜索任何值时,查询会根据查询获得完美的结果。

示例:如果我搜索字段值2003,则它给出最小值2001和最大值2005。

但是当我搜索任何小于2001或大于2009的值时,它会得到空的结果。

任何人都可以告诉我在查询中犯了什么错误。

SELECT * FROM `table_name` 
WHERE `size` LIKE ('%5%') 
  AND (`zip` in (SELECT max(`zip`) 
                 FROM `table_name` 
                 WHERE `zip` < '2010' 
                 order by `zip` desc) 
    OR `zip` in (SELECT min(`zip`) 
                 FROM `table_name` 
                 WHERE `zip` > '2010' 
                 order by `zip` asc)
      ) 

2 个答案:

答案 0 :(得分:1)

它可能与数据类型有关。你做&gt;和&lt;字符串值的标准。我建议先将它们转换为整数值

答案 1 :(得分:0)

感谢大家分享您的想法。

最后我发现了我的查询错误。我在查询中使用了LIKE ('%5%'),对于这个括号(),它产生了一个问题。所以我只需删除LIKE括号,并在内部查询中添加LIKE '%5%'条件。

SELECT * FROM `table_name` WHERE `size` LIKE '%5%' AND (`zip` in (SELECT max(`zip`) FROM `table_name` WHERE `zip` < '2010' AND `size` LIKE '%5%' order by `zip` desc) OR `zip` in (SELECT min(`zip`)  FROM `table_name` WHERE `zip` > '2010' AND `size` LIKE '%5%' order by `zip` asc))