検索

ホームページ  >  に質問  >  本文

php - MYSQL で 20-35 のような形式で年齢グループ フィールドの範囲検索を実行するにはどうすればよいですか?

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

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

代言代言2729日前1044

全員に返信(8)返信します

  • 怪我咯

    怪我咯2017-06-10 09:49:49

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

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-06-10 09:49:49

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

    返事
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-10 09:49:49

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

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-10 09:49:49

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

    返事
    0
  • 代言

    代言2017-06-10 09:49:49

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

    返事
    0
  • 为情所困

    为情所困2017-06-10 09:49:49

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

    返事
    0
  • 滿天的星座

    滿天的星座2017-06-10 09:49:49

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

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

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

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

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

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-10 09:49:49

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

    返事
    0
  • キャンセル返事