我在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)
)
答案 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))