我正在使用JDBC进行外卡搜索。
当我使用单个表时,代码工作正常。
当我尝试使用通配符搜索组合多个表时,代码不起作用。
例如,用户可以搜索任何关键字。
这是动态输入值:
where s1(cricket,windows 8,google)
在单人表搜索中,我在体育表中寻找“板球”。
这是我的查询,工作正常:
"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+"%'"
此代码有什么问题?
答案 0 :(得分:2)
尝试使用UNION
而不是OR
来结束单个语句。通过这种方式,您可以使用相同的列连接多个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+"%'" ;
但请注意!您的单个表必须具有相同的列/ columncount,否则它将无法工作!
也许更好的例子来澄清:
"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+"%'" ;
正如您在Statement 6中所看到的,您可以通过重命名将其他列引用到您的结果,但columncount必须相同。
希望这可以帮到你!