mysqlには年齢層を格納するフィールドageがあり、形式は図のとおりで、0-0の場合は無制限です
現(xiàn)在の要件は、年齢グループに基づいて検索することです。たとえば、25 歳から 34 歳までのすべてのデータを検索したいと考えています。
その後、問題が発生します。where で and を使用すると、結(jié)果はほとんど得られず、ほとんど何も得られません。or を使用すると、結(jié)果は多くなりますが、結(jié)果が正確ではないことは明らかです。正確に検索するにはどうすればよいですか
ご回答ありがとうございます?,F(xiàn)在私が使用している方法は
です。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) ;
ほとんど使えないけど、何か違和感がある
これは判斷が難しいですが、30~55はあなたが望む25~34の條件を満たしていますか?それとも25~34以內(nèi)でなければならないのでしょうか?それはあなたの具體的な要件によって異なります
なぜデータテーブル構(gòu)造がこのように設(shè)計(jì)されているのか、非常に興味があります。なぜ年齢を保存しないのですか? テーブル構(gòu)造がこのように設(shè)計(jì)されている場合、なぜ 25 歳から 34 歳までのデータを取得する必要があるのでしょうか?あなたの年齢は指定された範(fàn)囲にすぎず、特定の値ではありません。テーブルの構(gòu)造を再設(shè)計(jì)し、誤って間違いをしないようにする必要があります。
1. このように年齢グループを保存する場合、年齢範(fàn)囲を區(qū)別するために別のキーを作成する必要がありますか?
2. スクリーンショットには 1-5、2-6、3-4 などのスパンのデザインも表示されています。ユーザーが 3 を選択した場合、どれを選択する必要がありますか?
抽象的な思考を使って振り返ることをお勧めします。テーブルの年齢フィールドに格納されている情報(bào)をセット A として考え、どこにある條件をセット C として考えます。最終的な結(jié)果はどのような狀況を満たす必要がありますか?
セット A とセット C には交差があります
セット A はセット C のサブセットです
集合 C は集合 C そのものです
これに基づいて、現(xiàn)在のテーブル構(gòu)造は明らかに適切ではありません。データの量が大きくない場合は、オフラインでデータをクリーンアップし、年齢フィールドを下限と上限に分割してから、コレクション フィルタリング方法を使用できます。たくさん。