我有一个带有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
将是主键。您可以在ID
中添加一个INDEX
。)
然后你可以简单地做:
SELECT ID FROM myTable WHERE Zip_Code = 61034