【问题标题】:select all from where there are multiple values for a column [duplicate]从一列有多个值的地方全选[重复]
【发布时间】: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)

标签: mysql database


【解决方案1】:

LIKE句中需要添加%LIKE '%country%'
% 允许在所有字符串中搜索,无论之前和之后的内容。
如果您喜欢“国家”,则仅显示具有单个国家/地区的人。
干杯

【讨论】:

    猜你喜欢
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多