代码之家  ›  专栏  ›  技术社区  ›  dotty

MySQL查询未显示正确的数据

  •  0
  • dotty  · 技术社区  · 14 年前

    大家好,我有一个MySQL查询

    SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '999' ORDER BY `product` DESC LIMIT 12 OFFSET 0
    

    这显然选择了12种价格在60到999之间的产品。这将正确显示行。

    但是如果我像这样增加限制

    SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '1000' ORDER BY `product` DESC LIMIT 12 OFFSET 0
    

    没有显示行。你知道为什么会这样吗?“价格”字段是浮动类型字段

    3 回复  |  直到 14 年前
        1
  •  2
  •   vulkanino    14 年前

    删除',因为字段类型是数字,而不是字符。

        2
  •  0
  •   Pablo Santa Cruz    14 年前

    你在治疗 '60' '1000' 作为角色。使用数字:

    where `price` between 60 and 1000
    

    如果使用varchar字符串,则 无行 会匹配一个 between “60”和“1000” condition, since '1000' is smaller than ‘60’‘瓦查尔语。

    它和 '999' 因为可能有几个价格介于 '6' '9' .

    mysql> select '60' < '9';
    +------------+
    | '60' < '9' |
    +------------+
    |          1 | 
    +------------+
    1 row in set (0.00 sec)
    
        3
  •  0
  •   Sachin Shanbhag    14 年前

    60999和1000被视为chars而不是float或int,

    它与999一起工作的原因是比较发生在ascii字符上。

    对于1000,您不会得到任何行,因为6的值大于1,所以它的价格从6到1之间的ascii开始。