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
按你說的30-55符合25-34的話,可以這樣
select * from tbl where left(age,2)<=34 and right(age,2)>=25;
我很好奇為什么數(shù)據(jù)表結(jié)構(gòu)要這樣設(shè)計(jì) 為什么不是存年齡? 如果這樣設(shè)計(jì)表結(jié)構(gòu) 為什么還要有取25-34歲之間的數(shù)據(jù)?你的年齡只是指定的一個(gè)區(qū)間不是一個(gè)具體數(shù)值 你應(yīng)該重新去設(shè)計(jì)你的表結(jié)構(gòu) 不要將錯(cuò)就錯(cuò)
1、你這樣存年齡段,是不是應(yīng)該在另起一個(gè)key來區(qū)分年齡的跨度。
2、截圖還出現(xiàn)1-5,2-6,3-4這樣的跨度設(shè)計(jì),如果用戶要是3該選哪個(gè)合理。
推薦你用抽象的思維反推一下:將表里age字段存的信息看作集合 A,將 where 中的條件看作集合 C,你最終的結(jié)果是要符合什么情況?
集合 A 和集合 C 有交集
集合 A 是集合 C 的子集
集合 C 是集合 C 的自己
然后在這個(gè)基礎(chǔ)上,你當(dāng)前表結(jié)構(gòu)肯定是不適合的,如果數(shù)據(jù)量不大的話,可以對(duì)數(shù)據(jù)做個(gè)離線清洗,將 age 字段拆分成 lower limit 和 upper limit,這樣再做集合篩選方法就很多了。