6

我正在使用 JDBC 进行通配符搜索。

当我使用单个表时,代码工作正常。

当我尝试使用通配符搜索组合多个表时,代码不起作用。

例如,用户可以搜索任何关键字。

  1. 如果用户搜索“板球”,则板球关键字在运动表中可用
  2. 如果用户搜索“ windows 8 ”,它在软件表中可用
  3. 如果用户搜索“ google, yahoo ”,则关键字在网站表中可用

这是动态输入值:

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+"%'"

这段代码有什么问题?

4

1 回答 1

2

尝试使用 aUNION而不是 a连接您的单个语句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+"%'" ;

但请注意!您的单个表必须具有相同的列/列数,否则将无法正常工作!
也许更好的例子来澄清:

"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 中看到的,您可以通过重命名其他列来引用您的结果,但列数必须相同。

希望这可以帮助你!

于 2013-02-13T07:19:47.463 回答