0

2 つのフィールド (4 つの例) を持つテーブル myTable があります。

ID   Zip_Codes
===  =========
1    60148,60123,61034,61234
2    60122,61034

使いたい:

$zip = 61034;
$qry = "Select ID from myTable Where $zip in Zip_Codes";

それは可能ですか?速い理由は何ですか?他のより良い解決策は?

4

1 に答える 1

2

ここでは使用できませんINx IN (1,2)は の省略形でx = 1 OR x = 2あり、カンマ区切りのリスト内を検索することはできません。

使用できますFIND_IN_SET

SELECT ID FROM myTable WHERE FIND_IN_SET(61034, Zip_Codes);

ただし、1 つの行に複数の値を含めることはできません。郵便番号ごとに 1 つの行が必要です。

RowID   ID   Zip_Code
=====   ===  =========
1       1    60148
2       1    60123
3       1    61034
4       1    61234
5       2    60122
6       2    61034

(主キーになります。 toRowIDを追加できます。)INDEXID

次に、次のように簡単に実行できます。

SELECT ID FROM myTable WHERE Zip_Code = 61034
于 2012-07-19T15:55:28.363 に答える