在逗号分隔字段上使用WHERE子句选择记录

时间:2012-07-19 15:47:56

标签: php

我有一个带有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";

这可能吗? 是什么让它快? 其他更好的解决方案?

1 个答案:

答案 0 :(得分:2)

您无法在此处使用INx 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