我的a表有两个字段
id, ram
1   256M
2   512M
3   1G
我想查询小于512M的结果,如得到256M,而不是256M,1G
查询大于512M的结果,如得到1G。
请各位达人支招!

解决方案 »

  1.   

    要将RAM中内容转换为一致
    SELECT * FROM (
    select id,if(ram='1G',1024,LEFT(RAM,3)+0) AS NEWRAM FROM TT ) A WHERE NEWRAM>512
    OR
    SELECT * FROM TT WHERE if(ram='1G',1024,LEFT(RAM,3)+0)<512
      

  2.   

    建议你修改一下表结构,全部转化为M或者G,这样好比较,否则效率得不到保证!
    依照你现在的表结构,不过毫无效率可言!!!!
    假设表明为ram_record.from   (select id,
                   if(instr(ram,'G'),concat((ram + 0) * 1024,'M'),
                      ram) as ram
            from   ram_record) T
    where  ram + 0 < cast('512M' as unsigned);
      

  3.   

    呵呵,你也不慢哦,向你学习MYSQL方面的知识哦