如何在没有全文索引的两个mysql表中搜索字符串
我用这个查询在两个表中搜索一些字符串(下载,新闻) 并从该记录返回名为title的列, 但是代码有问题。它只是显示代码中第二个表的结果,如果我再次更改代码中的表位置,我将从第二个表得到结果如何在没有全文索引的两个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
$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:根据后续问题更新答案。