mysql数据库实现全站搜索(3张表)

mysql数据库实现全站搜索(3张表),第1张

为什么不用三条sql分别搜索呢,这样搜出来的结果你知道是从哪个表出来的。如果你要用一条sql只能使用union了,类似这样:

select id, name from tablename1 where id=1union select id, title as name from tablename2 where id=1unionselect id, name from tablename3 where id=1

要注意,各select搜索的字段名必须数量和名称都相同,不相同的用as改名相同的

如果这样的话建议在各表中加一个字段,来区分这条记录来自哪个表

HP的站内搜索可以使用SELECT和LIKE语句来对文章的标题进行过滤选择,将需要的数据筛选出来。 如果有多个筛选可以使用AND语句连接起来进行多条语句筛选。 如果希望是能搜索到全站所有的数据,一般在数据库设计之初最好就是把所有数据放一个表,然后通过扩展表的方式进行数据扩展!具体方法可以参考ONETHINK的设计模式。

具体搜索方法: SELECT * FROM 表名 WHERE 字段 LIKE '%关键字%'

理论上,要针对所有的表各写一条SQL,SQL中要列出所有的字符类字段,例如:

SELECT * FROM taba WHERE fielda LIKE '%abc%' OR fieldB LIKE '%abc%' ……

SELECT * FROM tabb WHERE fielda LIKE '%abc%' OR fieldB LIKE '%abc%' ……

写这样的SQL非常痛苦,看你是用的什么数据库,许多数据库系统有系统字典,就是在数据库里面的某些表中存放着所有的数据库、表、字段的名称和类型,那样可以通过那些信息编写出自动生成前面的SQL语句的SQL语句。

另外,一般的数据库都是存放在文件中或者磁盘上,可能利用全盘搜索软件搜索磁盘上特定的字符串,比上述SQL语句要快得多,只是搜索到了,要判断数据库行有一些麻烦。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10065905.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存