Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
如何在没有全文索引的两个mysql表中搜索字符串_Mysql_Search - Fatal编程技术网

如何在没有全文索引的两个mysql表中搜索字符串

如何在没有全文索引的两个mysql表中搜索字符串,mysql,search,Mysql,Search,我用这个查询在两个表中搜索一些字符串(下载,新闻) 并从该记录返回名为title的列, 但是代码有问题。它只是显示代码中第二个表的结果,如果我再次更改代码中的表位置,我将从第二个表得到结果 $sql="SELECT download.title,news.title FROM download,news WHERE download.title LIKE '%$search%' OR news.title LIKE '%$search%' OR news.text LIKE '%$search

我用这个查询在两个表中搜索一些字符串(下载,新闻) 并从该记录返回名为title的列, 但是代码有问题。它只是显示代码中第二个表的结果,如果我再次更改代码中的表位置,我将从第二个表得到结果

 $sql="SELECT download.title,news.title FROM download,news WHERE download.title LIKE '%$search%' OR news.title LIKE '%$search%' OR news.text LIKE '%$search_text%' ";  
和打印结果

while ($row = mysql_fetch_assoc($result)) {
 echo $row['title'] ."<br/>";
}
while($row=mysql\u fetch\u assoc($result)){
echo$row['title']。“
”; }
使用:

因为WHERE子句中没有联接条件,所以您发布的查询生成笛卡尔乘积。此查询将根据两个表中的记录返回一个不同的
title
值列表。如果查询不可能返回重复项,我会使用
UNION-ALL

如何找出哪些表的结果来自?
在不了解更多关于表的信息的情况下,最简单的方法是使用静态值定义计算/派生列:

SELECT d.title,
       'DOWNLOAD' AS type
  FROM DOWNLOAD d
 WHERE d.title LIKE '%$search%' 
UNION 
SELECT n.title,
       'NEWS' AS type
  FROM NEWS n
 WHERE n.title LIKE '%$search%' 
    OR n.text LIKE '%$search%' 
type
列指示记录来自哪个表。然而,这提出了一个潜在的问题-

两个表中可能有相同的标题-结果集如下所示:

TITLE      TYPE
----------------------
abc_title  DOWNLOAD
abc_title  NEWS
使用:

因为WHERE子句中没有联接条件,所以您发布的查询生成笛卡尔乘积。此查询将根据两个表中的记录返回一个不同的
title
值列表。如果查询不可能返回重复项,我会使用
UNION-ALL

如何找出哪些表的结果来自?
在不了解更多关于表的信息的情况下,最简单的方法是使用静态值定义计算/派生列:

SELECT d.title,
       'DOWNLOAD' AS type
  FROM DOWNLOAD d
 WHERE d.title LIKE '%$search%' 
UNION 
SELECT n.title,
       'NEWS' AS type
  FROM NEWS n
 WHERE n.title LIKE '%$search%' 
    OR n.text LIKE '%$search%' 
type
列指示记录来自哪个表。然而,这提出了一个潜在的问题-

两个表中可能有相同的标题-结果集如下所示:

TITLE      TYPE
----------------------
abc_title  DOWNLOAD
abc_title  NEWS

妈的,你说得对。我以为这只是PHP对标题的重击。抢手货如何找出哪个表格的结果?@max:根据后续问题更新了答案。废话,你说得对。我以为这只是PHP对标题的重击。抢手货如何找出哪个表格的结果?@max:根据后续问题更新答案。