我有一个带有 2 个字段的表 myTable(4 个示例):
ID Zip_Codes
=== =========
1 60148,60123,61034,61234
2 60122,61034
我想使用:
$zip = 61034;
$qry = "Select ID from myTable Where $zip in Zip_Codes";
那可能吗?是什么让它快速?其他更好的解决方案?
我有一个带有 2 个字段的表 myTable(4 个示例):
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);
但是,您不应该在一行中有多个值。每个邮政编码应该有一行。
RowID ID Zip_Code
===== === =========
1 1 60148
2 1 60123
3 1 61034
4 1 61234
5 2 60122
6 2 61034
(RowID
将主键。您可以添加INDEX
到ID
。)
然后你可以简单地做:
SELECT ID FROM myTable WHERE Zip_Code = 61034