Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL:sprawdź, czy wartość zawiera się w przedziale zakresu

Powinieneś mieć dwie tabele:jedną dla kolumn, drugą dla zakresów kolumn. Dzięki temu proste zapytanie pobierze to, czego potrzebujesz.

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;

Właściwie główna tabela nie jest nawet potrzebna, chyba że chcesz przechowywać dodatkowe dane :)

Jeśli utkniesz przy innym projekcie bazy danych, prawdopodobnie będziesz musiał pobrać wszystkie wiersze i użyć języka po stronie klienta, aby wykonać dopasowanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - domyślna wartość dla TIMESTAMP(3)

  2. Używanie zdarzeń preRemove/postRemove, aby dowiedzieć się, które zapytania mogą być wykonane, a które nie

  3. Wyłącz dostęp do bazy danych

  4. Railsy:Wymuś pusty ciąg na NULL w bazie danych

  5. Dołącz do trzech stołów