Heim > Fragen und Antworten > Hauptteil
Es gibt ein Feldalter in MySQL, das die Altersgruppe speichert. Wenn es 0-0 ist, ist es unbegrenzt
Die aktuelle Anforderung besteht darin, nach Altersgruppen zu suchen. Ich möchte beispielsweise alle Daten im Alter zwischen 25 und 34 Jahren finden.
Dann kommt hier das Problem. Wenn Sie „and“ verwenden, erhalten Sie nur sehr wenige Ergebnisse, fast keine. Wenn Sie „or“ verwenden, werden die Ergebnisse offensichtlich ungenau. So finden Sie es genau
Vielen Dank an alle für eure Antworten. Die Methode, die ich derzeit verwende, ist
SELECT age FROM
jobs
WHERE ((substring_index(age,'-',1) >= 16 OR substring_index(age,'-',-1) = 0) OR (substring_index(age,'-',- 1) <= 24)) AND !(substring_index(age,'-',1) = 0 AND substring_index(age,'-',-1) = 0);
Es funktioniert kaum, aber irgendetwas fühlt sich komisch an
怪我咯2017-06-10 09:49:49
按你说的30-55符合25-34的话,可以这样
select * from tbl where left(age,2)<=34 and right(age,2)>=25;
扔个三星炸死你2017-06-10 09:49:49
我很好奇为什么数据表结构要这样设计 为什么不是存年龄? 如果这样设计表结构 为什么还要有取25-34岁之间的数据?你的年龄只是指定的一个区间不是一个具体数值 你应该重新去设计你的表结构 不要将错就错
伊谢尔伦2017-06-10 09:49:49
1、你这样存年龄段,是不是应该在另起一个key来区分年龄的跨度。
2、截图还出现1-5,2-6,3-4这样的跨度设计,如果用户要是3该选哪个合理。
滿天的星座2017-06-10 09:49:49
推荐你用抽象的思维反推一下:将表里age字段存的信息看作集合 A,将 where 中的条件看作集合 C,你最终的结果是要符合什么情况?
集合 A 和集合 C 有交集
集合 A 是集合 C 的子集
集合 C 是集合 C 的自己
然后在这个基础上,你当前表结构肯定是不适合的,如果数据量不大的话,可以对数据做个离线清洗,将 age 字段拆分成 lower limit 和 upper limit,这样再做集合筛选方法就很多了。