0

所以我有大约 6 个表,每个表有 6 个列,例如地址、名称等。我必须实现一个搜索功能,用户输入一个“单词”,我必须搜索我的整个数据库(所有 6 个表)才能找到这个词,并且当找到该单词时,应从该表中返回该特定行。知道我该怎么做吗?

4

3 回答 3

1

假设所有六个表都具有相同的列名,您可以使用此查询。

SELECT * FROM TABLE1 WHERE 
    col1 LIKE '%searchValue%' OR col2 LIKE '%searchValue%' OR 
    col3 LIKE '%searchValue%' OR col4 LIKE '%searchValue%' OR 
    col4 LIKE '%searchValue%' OR col6 LIKE '%searchValue%'
UNION ALL
SELECT * FROM TABLE2 WHERE 
    col1 LIKE '%searchValue%' OR col2 LIKE '%searchValue%' OR 
    col3 LIKE '%searchValue%' OR col4 LIKE '%searchValue%' OR 
    col4 LIKE '%searchValue%' OR col6 LIKE '%searchValue%'
UNION ALL
SELECT * FROM TABLE3 WHERE 
    col1 LIKE '%searchValue%' OR col2 LIKE '%searchValue%' OR 
    col3 LIKE '%searchValue%' OR col4 LIKE '%searchValue%' OR 
    col4 LIKE '%searchValue%' OR col6 LIKE '%searchValue%'
 and so on...

如果六个表具有不同的列名,您仍然可以使用,union all但在您必须重命名列之前,以便每个选择返回相同的列名

SELECT col_a as COL1, col_b as COL2, col_c AS COL3, col_d AS COL4, col_e AS COL5, col_f as COL6 FROM TABLE1 WHERE ....
UNION ALL
SELECT col_q as COL1, col_w as COL2, col_e AS COL3, col_r AS COL4, col_t AS COL5, col_y as COL6 FROM TABLE2 WHERE ....
etc..

如果上述两个查询都不适合您的目的,您仍然可以使用单个查询,执行六个不同的选择语句。

于 2012-04-18T19:26:21.763 回答
0

谷歌 - MySQL 全文搜索

于 2012-04-18T19:21:57.857 回答
0

使用 LIKE 子句和通配符。(以 php 为例)

'Select * FROM Table_Nam WHERE column_Nam1 LIKE %' . $searchValue . '%'.
    'OR column_Nam2 LIKE %' . $searchValue . '%'.
    'OR column_Nam3 LIKE %' . $searchValue . '%'.
    'OR column_Nam4 LIKE %' . $searchValue . '%'.
    'OR column_Nam5 LIKE %' . $searchValue . '%'.
    'OR column_Nam6 LIKE %' . $searchValue . '%'.;
于 2012-04-18T19:19:37.903 回答