【发布时间】:2017-10-30 19:32:48
【问题描述】:
我有一个人员数据库,每个人都可以拥有一个或多个国家/地区。可以从多项选择下拉列表中将国家/地区添加到 db。 一个人可能是这样的
name country
john USA, UK, Poland
joe USA
Jack Germany
用户可以通过更改 的值来过滤人员 我正在尝试根据用户的选择过滤人员。我正在使用这个查询
SELECT *
FROM `personnel`
WHERE <%= country %> LIKE `country`
ORDER BY `industry` ASC, `name` ASC
问题在于此选择仅过滤具有单个国家/地区的行(人),并且不显示拥有多个国家/地区的人。 我尝试使用 = 而不是 LIKE 但那个也没有用
【问题讨论】:
-
修正你的数据结构,所以你有一个名为
PersonnelCountry的表,每个人和国家都有一行。 -
数据库是人员,我的错。是的,每个人都有一行,在国家列中,他们可以有一个或多个国家
-
但最好的解决方案是按照@GordonLinoff 的建议规范化您的表结构。
-
@Shadow,find_in_set 是 tnx 的答案,这解决了我的问题 find_in_set(,
country)