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";
それは可能ですか?速い理由は何ですか?他のより良い解決策は?
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";
それは可能ですか?速い理由は何ですか?他のより良い解決策は?
ここでは使用できませんIN
。 x 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
を追加できます。)INDEX
ID
次に、次のように簡単に実行できます。
SELECT ID FROM myTable WHERE Zip_Code = 61034