php - MYSQL で 20-35 のような形式で年齢グループ フィールドの範囲検索を実行するにはどうすればよいですか?
代言
代言 2017-06-10 09:47:49
0
8
1061

mysqlには年齢層を格納するフィールドageがあり、形式は図のとおりで、0-0の場合は無制限です

現在の要件は、年齢グループに基づいて検索することです。たとえば、25 歳から 34 歳までのすべてのデータを検索したいと考えています。

その後、問題が発生します。where で and を使用すると、結果はほとんど得られず、ほとんど何も得られません。or を使用すると、結果は多くなりますが、結果が正確ではないことは明らかです。正確に検索するにはどうすればよいですか

ご回答ありがとうございます。現在私が使用している方法は

です。

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) ;

ほとんど使えないけど、何か違和感がある

代言
代言

全員に返信(8)
刘奇

おっしゃるとおり、30-55が25-34と一致する場合は、こうなる可能性があります

リーリー
いいねを押す +0
洪涛

これは判断が難しいですが、30~55はあなたが望む25~34の条件を満たしていますか?それとも25~34以内でなければならないのでしょうか?それはあなたの具体的な要件によって異なります

いいねを押す +0
扔个三星炸死你

なぜデータテーブル構造がこのように設計されているのか、非常に興味があります。なぜ年齢を保存しないのですか? テーブル構造がこのように設計されている場合、なぜ 25 歳から 34 歳までのデータを取得する必要があるのでしょうか?あなたの年齢は指定された範囲にすぎず、特定の値ではありません。テーブルの構造を再設計し、誤って間違いをしないようにする必要があります。

いいねを押す +0
伊谢尔伦

1. このように年齢グループを保存する場合、年齢範囲を区別するために別のキーを作成する必要がありますか?
2. スクリーンショットには 1-5、2-6、3-4 などのスパンのデザインも表示されています。ユーザーが 3 を選択した場合、どれを選択する必要がありますか?

いいねを押す +0
代言

MySQL の組み込み関数を理解していない多くの人が、他人に適当な指導を行っています

いいねを押す +0
为情所困

問題の原因はデータベース設計に無理がある

いいねを押す +0
滿天的星座

抽象的な思考を使って振り返ることをお勧めします。テーブルの年齢フィールドに格納されている情報をセット A として考え、どこにある条件をセット C として考えます。最終的な結果はどのような状況を満たす必要がありますか?

  1. セット A とセット C には交差があります

  2. セット A はセット C のサブセットです

  3. 集合 C は集合 C そのものです

これに基づいて、現在のテーブル構造は明らかに適切ではありません。データの量が大きくない場合は、オフラインでデータをクリーンアップし、年齢フィールドを下限と上限に分割してから、コレクション フィルタリング方法を使用できます。たくさん。

いいねを押す +0
伊谢尔伦

あなたのテーブル構造ではあなたが言及した機能を実現できません

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート