2010-12-01 80 views
0

我的问题很简单 - 至少我希望它是。我尝试在MySQL中连接两个表,并在连接字段上执行WHERE语句以产生结果。下面是示例查询:MySQL CONCAT在WHERE声明(多表)

SELECT a.name, b.company, concat_ws(' ', a.company, b.name) as whole_name 
FROM users as a 
INNER JOIN company as b on a.company_id = b.company_id 
HAVING whole_name LIKE '%IBM John%' 
LIMIT 25 

此查询似乎仍然从名称列拉,并将不返回任何结果。我试过这样做:

SELECT a.name, b.company, concat_ws(' ', a.company, b.name) as whole_name 
FROM users as a 
INNER JOIN company as b on a.company_id = b.company_id 
WHERE concat_ws(' ', a.company, b.name) LIKE '%IBM John%' 
LIMIT 25 

而且它仍然不会产生任何结果。数据绝对在表格中。 John的公司是IBM Computer Systems。 whole_name字段将返回'IBM Computer Systems John Smith',但在'%IBM John%'上的查询不会返回任何内容。

任何帮助?

感谢, 格雷格

回答

1

需要IBM和约翰之间的%...它寻找“IBM约翰”在文中某处......没有IBM那么约翰某处进一步沿着..

+0

所以对于每个搜索词,你需要分解并添加'%'符号?如'%IBM%%John%'? – gregavola 2010-12-01 13:58:29