0

これには少し問題があります。値が mysql クエリの結果で提供される範囲内にあるかどうかを確認する方法はありますか。

郵便番号 85012 が返された ZipCodes フィールド内にあるかどうかを確認するには、最初にクエリを作成し、それを部分に分割し、BETWEEN を使用する必要はありませんか?

+---------+-------------+--------------------+------------+-------------+
| StyleID | HistStyleID | AutobuilderStyleID | FilterRule | ZipCodes    |
+---------+-------------+--------------------+------------+-------------+
|  355755 |  2013490103 | w2013k49m1t3       | includes   | 27000-36999 |
+---------+-------------+--------------------+------------+-------------+

:: アップデート ::

このテーブルには、次のようにさまざまな範囲を含めることもできます。

+---------+-------------+--------------------+------------+-------------------------------------+
| StyleID | HistStyleID | AutobuilderStyleID | FilterRule | ZipCodes                            |
+---------+-------------+--------------------+------------+-------------------------------------+
|  332492 |  2012493107 | w2012k49m31t7      | excludes   | 38600-39799,70000-71499,71600-79999 |
+---------+-------------+--------------------+------------+-------------------------------------+
4

1 に答える 1

1

コメントで提案されているように、データベースを再設計する必要があります。

CREATE TABLE Styles (
     StyleID INT PRIMARY KEY,
     HistStyleID INT, 
     AutobuilderStyleID VARCHAR(40),
     FilterRule VARCHAR(40)
)


CREATE TABLE ZipCodes (
     StyleID INT,
     RangeBegin INT,
     RangeEnd INT,

     FOREIGN KEY StyleID REFERENCES Styles(StyleID)
)

次に、次のようなクエリを作成できます。

SELECT DISTINCT StyleID FROM ZipCodes WHERE RangeBegin >= 85012 AND RangeEnd <= 85012
于 2013-08-05T18:09:11.287 に答える