php - 如何将这三个sql查询合并为一个?

标签 php mysql full-text-search

如何将这两个 SQL 查询合并为一个?

SELECT DISTINCT * FROM rss WHERE MATCH(content,title) AGAINST ('$filter') 

SELECT COUNT(content) FROM rss WHERE MATCH(content,title) AGAINST ('$filters')

如果上述查询的结果为 0

-

SELECT DISTINCT * FROM rss WHERE content LIKE '%$filters%' OR title LIKE '%$filters%'; 
$filter .= $row['filter'];
$filters = $row['filter'];

$filters 可以是多个关键字

最佳答案

您不必使用查询 2,

mysql_num_rows将指示查询 1 有多少行,因此只需丢弃查询 2

如果 mysql_num_rows 返回零,则继续查询 3

要将三个查询合并为一个,请使用OR

SELECT DISTINCT * FROM rss 
WHERE 
  (MATCH(content,title) AGAINST ('$filter'))
OR
  (content LIKE '%$filter%' OR title LIKE '%$filter%')

如上所述,您实际上并不需要先进行计数。

如果$filter包含很多关键字,则只需重复

  (content LIKE '%$filter_1%' OR title LIKE '%$filter_1%') OR
  (content LIKE '%$filter_2%' OR title LIKE '%$filter_2%') OR ...

关于php - 如何将这三个sql查询合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4531019/

相关文章:

mysql - 为 MySQL 中的每个第一列合并第二列

mysql - 如何在 MYSQL 中通过另一列选择具有 MAX(列值)、PARTITION 的行?

在 where 中使用全文而不是 order by

javascript - 如何使用 HTML 从树结构中显示选定的文本

php - PHP/MySQL 应用程序声明外键是一种常见的做法吗?

mysql - 如何使用sql对按字母顺序排序的字符串中的单词进行排序

sql - 在 SQL 中实现子字符串搜索的最佳方法是什么?

c# - 如何在 Lucene.net 中执行语音和近似搜索

javascript - PHP 文件的 jQuery AJAX url 不起作用

php - 如何访问有空格的变量?