用2个表中的数据对列进行全文搜索

时间:2018-09-05 05:01:22

标签: mysql sql database search full-text-search

我在MySql DB中有两个表,分别命名为“ Patients”和“ Country”。 患者表包含

'name','dob',postcode','address', 'country_id'等。
 国家表有
'id' and 'country_name'列。

现在,我希望用户输入患者姓名,邮政编码或国家/地区中的任何内容,并获取所需的患者结果/数据。

要实现这一点,我想到的一种方法是使用联接执行查询。 我想问的另一种方式是,这是一种将搜索变量(即名称,邮政编码和国家/地区)存储在具有全文类型的列中的一种好方法吗,例如“ name_postcode_country”,以及当用户输入搜索变量时我在新创建的列上执行全文搜索。

或者我应该考虑其他更好的方法。

1 个答案:

答案 0 :(得分:0)

将所有这些信息都放在一个列中不是一个好主意,您可以将这种信息与SELECT结合使用,以加入提到的表:

<script src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js"></script>
<script src="http://cdn.hcharts.cn/highcharts/highcharts.js"></script>
<script src="http://cdn.hcharts.cn/highcharts/modules/exporting.js"></script>

<script src="http://cdn.hcharts.cn/highcharts/modules/export-data.js"></script>

<div id="container" class="chart"></div>

您需要使用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伪列来解决区分大小写问题。