sql >> データベース >  >> RDS >> Mysql

MySQL:値が範囲間隔に含まれているかどうかを確認します

    2つのテーブルが必要です。1つは列用、もう1つは列範囲用です。これにより、簡単なクエリで必要なものを取得できます。

    CREATE TABLE foo (
        foo_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
        PRIMARY KEY (foo_id)
    )
    ENGINE=InnoDB;
    
    CREATE TABLE foo_range (
        foo_id INT(10) UNSIGNED NOT NULL,
        column_from INT(10) UNSIGNED NOT NULL,
        column_to INT(10) UNSIGNED NOT NULL,
        INDEX foo_range_fk1 (foo_id),
        CONSTRAINT foo_range_fk1 FOREIGN KEY (foo_id) REFERENCES foo (foo_id)
    )
    ENGINE=InnoDB;
    
    INSERT INTO foo(foo_id)
    VALUES (1), (2), (3);
    
    INSERT INTO foo_range(foo_id, column_from, column_to)
    VALUES (1, 400, 500), (2, 45, 74), (2, 23, 25), (3, 12, 14), (3, 19, 21);
    
    SELECT foo_id
    FROM foo_range
    WHERE 421 BETWEEN column_from AND column_to;
    

    そして、実際には、追加のデータを保存する必要がない限り、メインテーブルは必要ありません:)

    他のDB設計に固執している場合は、おそらくすべての行を取得し、クライアント側の言語を使用して照合を行う必要があります。



    1. JUnit / HSQLDB:HSQLDBを使用してテストするときにOracle構文のエラーを回避する方法(特権なしおよび/またはDUALオブジェクトなし)

    2. OracleSQLはデータ内の文字¡を検索します

    3. オラクルrmanの簡単なバックアップ

    4. yiiモデルでmysql空間ポイントを挿入するにはどうすればよいですか?