Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL:जांचें कि कोई मान किसी श्रेणी अंतराल में समाहित है या नहीं

आपके पास दो टेबल होनी चाहिए:एक कॉलम के लिए, एक कॉलम रेंज के लिए। इसके साथ, एक साधारण क्वेरी आपको जो चाहिए उसे पुनः प्राप्त कर लेगी।

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;

और, वास्तव में, मुख्य तालिका तब तक आवश्यक नहीं है जब तक आप अतिरिक्त डेटा संग्रहीत नहीं करना चाहते :)

यदि आप अन्य डीबी डिज़ाइन के साथ फंस गए हैं, तो आपको शायद सभी पंक्तियों को पुनः प्राप्त करना होगा और मिलान करने के लिए अपनी क्लाइंट साइड भाषा का उपयोग करना होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कुछ प्रारूप में 1970 से पहले की तारीखों के लिए PHP में दिनांक वस्तु बनाएँ

  2. MySQL:स्ट्रिंग से सभी एकल वर्णों को कैसे हटाएं?

  3. नाम पैटर्न से मेल खाने वाले MySQL डेटाबेस में सभी तालिकाओं को छोटा करें

  4. डेटाबेस में तालिकाओं के लिए MySQL तालिका का आकार कैसे प्राप्त करें?

  5. मैं एक पूरी पंक्ति का चयन कैसे करूं जिसमें तालिका में सबसे बड़ी आईडी है?