对包含来自2个表的数据的列进行全文搜索

fumotvh3  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(314)

mysql数据库中有两个表,分别命名为“patients”和“country”。病人表包含 'name','dob',postcode','address', 'country_id' 等。
国家表有 'id' and 'country_name' 柱。
现在,我希望用户输入患者姓名、邮政编码或国家的任何内容,并获取所需的患者结果/数据。
为了实现这一点,我可以想到的一种方法是使用连接执行查询。另一方面,我想问的是,将搜索变量(即姓名、邮政编码和国家/地区)存储在一个具有全文类型的列中是否是一个好方法,这种方式类似于“name\u postcode\u country”,当用户输入搜索变量时,我会对新创建的列执行全文搜索。
或者我应该考虑其他更好的方法。

9fkzdhlc

9fkzdhlc1#

将所有这些信息保存在一个列中不是一个好主意,您可以使用这样一个组合与一个连接上述表的select:

select p.name, p.dob, p.postcode, p.address,
       c.country_name
  from Patients p
  inner join Country c 
     on ( p.country_id = c.id )
  where ( upper(name) like upper('%my_name_string%') ) 
     or ( upper(postcode) like upper('%my_postcode_string%') )
     or ( upper(country) like upper('%my_country_string%') );

你需要使用 upper 或者 lower 针对区分大小写问题的伪列。

相关问题