我想为我的网站建立一个搜索引擎。我的数据库表列表如下:
-
d_name
: 我需要搜索two列。
-
em
: 我需要搜索one column.
-
seri
: 我需要搜索one column.
-
topics
: 我需要搜索one column.
- 许多其他表的数量是动态的,并且列表包含在其中的列中
d_name
桌子。我需要搜索two每个表上的列。
由于结果数量可能很大,我还需要进行分页。
据我所知,我应该使用UNION
为了在多个表上搜索时使用分页,但首先,列数应该相同,但这里不是,而且我的表的数量是动态的。
另一方面,如果我尝试使用SHOW TABLES
它还会搜索其他一些包含我的私人信息的表。
这就是我到目前为止所做的:
$query = "(SELECT d_name, doc, db_name AS d FROM d_name WHERE d_name LIKE '%" .
$keyword . "%' OR title LIKE '%" . $keyword ."%')
UNION
(SELECT em_name, db_name AS em FROM em WHERE em_name LIKE '%" .
$keyword . "%')
UNION
(SELECT name AS topic FROM topics WHERE name LIKE '%" .
$keyword . "%')
UNION
(SELECT seri_name, db_name AS seri FROM seri WHERE seri_name LIKE '%" .
$keyword . "%')";
But the UNION
不起作用!有人知道我应该做什么吗?
如果执行 UNION 查询,所有单独的查询在结果中应具有相同的列数。您可以使用固定值,例如NULL
, ''
or 'not provided'
来填写其他表格。
示例查询 (demo http://www.sqlfiddle.com/#!2/188bb/1/0)
SELECT column_1, column_2 FROM i_have_two_columns
UNION
SELECT column_1, NULL FROM i_have_only_one_column
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)