Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用通配符从多个表中搜索值?_Java_Mysql_Jsp_Wildcard - Fatal编程技术网

Java 如何使用通配符从多个表中搜索值?

Java 如何使用通配符从多个表中搜索值?,java,mysql,jsp,wildcard,Java,Mysql,Jsp,Wildcard,我正在用JDBC进行通配符搜索 当我使用单个表时,代码运行良好 当我尝试使用通配符搜索组合多个表时,代码不起作用 例如,用户可以搜索任何关键字 如果用户搜索“cricket”,则可在运动表中找到cricket关键字 如果用户搜索“windows 8”,则可在软件表中找到 如果用户搜索“google,yahoo”,则关键字可在网站表中找到 以下是动态输入值: where s1(cricket,windows 8,google) 在单表搜索中,我在运动表中查找“cricket” 以下是我的查询,效

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

当我使用单个表时,代码运行良好

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

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

  • 如果用户搜索“cricket”,则可在运动表中找到cricket关键字
  • 如果用户搜索“windows 8”,则可在软件表中找到
  • 如果用户搜索“google,yahoo”,则关键字可在网站表中找到
  • 以下是动态输入值:

    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喜欢何处?