Java 如何使用通配符从多个表中搜索值?
我正在用JDBC进行通配符搜索 当我使用单个表时,代码运行良好 当我尝试使用通配符搜索组合多个表时,代码不起作用 例如,用户可以搜索任何关键字Java 如何使用通配符从多个表中搜索值?,java,mysql,jsp,wildcard,Java,Mysql,Jsp,Wildcard,我正在用JDBC进行通配符搜索 当我使用单个表时,代码运行良好 当我尝试使用通配符搜索组合多个表时,代码不起作用 例如,用户可以搜索任何关键字 如果用户搜索“cricket”,则可在运动表中找到cricket关键字 如果用户搜索“windows 8”,则可在软件表中找到 如果用户搜索“google,yahoo”,则关键字可在网站表中找到 以下是动态输入值: where s1(cricket,windows 8,google) 在单表搜索中,我在运动表中查找“cricket” 以下是我的查询,效
where s1(cricket,windows 8,google)
在单表搜索中,我在运动表中查找“cricket”
以下是我的查询,效果很好:
"select * from sports WHERE feed LIKE '%" +s1 + "%'";
我的多表查询不起作用
"select * from product WHERE sitename LIKE '%"+s1+"%'" "OR
"select * from sports WHERE sitename LIKE '%"+s1+"%'" " OR
"select * from website WHERE sitename LIKE '%"+s1+"%'" " OR
"select * from software WHERE sitename LIKE '%"+s1+"%'" "OR
"select * from other WHERE sitename LIKE '%"+s1+"%'"
这段代码有什么问题?试着用
联合
而不是或
来连接你的单个语句。有了它,您可以使用相同的列连接多个SQL查询和表。例如:
"select * from product WHERE sitename LIKE '%"+s1+"%' UNION
select * from sports WHERE sitename LIKE '%"+s1+"%' UNION
select * from website WHERE sitename LIKE '%"+s1+"%' UNION
select * from software WHERE sitename LIKE '%"+s1+"%' UNION
select * from other WHERE sitename LIKE '%"+s1+"%'" ;
但是要注意!您的单个表必须具有相同的列/列数,否则将无法工作也许可以用一个更好的例子来说明:
"select sitename, description from product WHERE sitename LIKE '%"+s1+"%' UNION
select sitename, description from sports WHERE sitename LIKE '%"+s1+"%' UNION
select sitename, description from website WHERE sitename LIKE '%"+s1+"%' UNION
select sitename, description from software WHERE sitename LIKE '%"+s1+"%' UNION
select sitename, text as description from other WHERE sitename LIKE '%"+s1+"%'" ;
正如您在语句6中看到的,您可以通过重命名其他列来引用结果,但列数必须相同
希望这对你有帮助 在您的单个查询中,您会说源喜欢何处,在您的多表中,sitename喜欢何处?