我有两个表:
表 1:
ID int auto_increment
person_name瓦尔查尔
person_nickname瓦尔查尔
表 2:
我想在两个ID int auto_increment
company_name瓦尔查尔
company_nickname瓦尔查尔
字段(不是 ID)上搜索两个表,只有一个查询。
我的搜索表单如下所示:
<form method="post" action="">
<input type="text" name="search" />
<button type="submit" title="Pesquisar" class="btn-search"></button>
</form>
基本上,我想要的是创建一个搜索字段,该字段将在这两个特定的表字段中进行搜索。
我不知道你为什么想要一个查询,但我会试着给你一个完成它的方法。
您没有指定您想要的结果类型,因此这是我对您可能想要的结果的看法。我确实想指出LIKE
的性能相当差,因此我下面的代码将运行得越差,数据库越大。
我不确定这是正确的方法,但这样的事情应该有效:
(SELECT 'table1' AS 'table', id, person_name AS 'name', person_nickname AS 'nickname'
FROM table1
WHERE (person_name LIKE '%search%' OR person_nickname LIKE '%search%'))
UNION
(SELECT 'table2' AS 'table', id, company_name AS 'name', company_nickname AS 'nickname'
FROM table2
WHERE (company_name LIKE '%search%' OR company_nickname LIKE '%search%'))
这将返回以下Search=Dave
的结果:
- 表: 表1, ID: 5, 姓名: 戴夫·琼斯, 昵称: 大力水手 表:
- 表1,编号:3,姓名:大卫测试,昵称:戴夫 表:
- 表2,编号:5,名称:戴夫公司,昵称:彼得森斯 表:
- 表2,ID:3,名称:我的公司,昵称:戴维斯特
更多关于 UNION at http://dev.mysql.com/doc/refman/5.0/en/union.html