php - Wie führe ich eine Bereichssuche nach einem Altersgruppenfeld in einem Format ähnlich 20-35 in MYSQL durch?
代言
代言 2017-06-10 09:47:49
0
8
1011

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

代言
代言

Antworte allen(8)
刘奇

按你说的30-55符合25-34的话,可以这样

select * from tbl where left(age,2)<=34 and right(age,2)>=25;
洪涛

这个不好判断,30-55 符不符合你要的25-34的条件呢?还是必须要在25-34之内的?要看你的具体要求了

扔个三星炸死你

我很好奇为什么数据表结构要这样设计 为什么不是存年龄? 如果这样设计表结构 为什么还要有取25-34岁之间的数据?你的年龄只是指定的一个区间不是一个具体数值 你应该重新去设计你的表结构 不要将错就错

伊谢尔伦

1、你这样存年龄段,是不是应该在另起一个key来区分年龄的跨度。
2、截图还出现1-5,2-6,3-4这样的跨度设计,如果用户要是3该选哪个合理。

代言

一大堆对mysql内置函数都没认透的人也给别人乱指导

为情所困

问题源头,数据库设计都不合理

滿天的星座

推荐你用抽象的思维反推一下:将表里age字段存的信息看作集合 A,将 where 中的条件看作集合 C,你最终的结果是要符合什么情况?

  1. 集合 A 和集合 C 有交集

  2. 集合 A 是集合 C 的子集

  3. 集合 C 是集合 C 的自己

然后在这个基础上,你当前表结构肯定是不适合的,如果数据量不大的话,可以对数据做个离线清洗,将 age 字段拆分成 lower limit 和 upper limit,这样再做集合筛选方法就很多了。

伊谢尔伦

你这表结构无法实现你说的功能

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!