我正在编写一个PHP/MySQL程序,我想知道如何使用MySQL搜索多个表.
基本上,我在大多数网站的右上角都有一个搜索框,当用户在该框中搜索某些内容时,它需要搜索users.username,users.profile_text,uploads.title,uploads.description,sets.description和comments.text.我需要获取ID(存储在每个表中的id字段中),如果可能的话,谷歌就像摘录一样.
您可以编写程序来单独查询每个表,也可以创建一个相对简单的视图,将重要表的所有可搜索列与一个显示它们来自哪个表的指示器联合起来.除了正常编写语句之外,搜索多个表并不是一种神奇的方法.
第二种方法看起来像这样:
(SELECT 'Table 1' AS TableName, id as Id, text as Searchable FROM table1) UNION (SELECT 'Table 2' AS TableName, table2_id as Id, name as Searchable FROM table2) UNION ...
然后搜索生成的视图.重要的是要注意这种方法不会很快.
一个类似且更快的替代方案是将一个表专用于此任务而不是视图,并在实际表的插入/更新/删除时填充它,而不是在访问时重新计算它.