MySQL多表全文搜索查询问题?

3

我正在进行一个多表全文搜索查询。但是我遇到了一些问题。 我需要进行类似以下的查询:

(SELECT 
title,content,date,cat 
FROM article1 
WHERE 
cat='Science fiction' 
AND 
MATCH (title,content) 
AGAINST 
('+Harry +Potter' IN BOOLEAN MODE)) 
UNION 
(SELECT 
title,content,date 
FROM article3 
WHERE MATCH (title,content)
 AGAINST 
('+Harry +Potter' IN BOOLEAN MODE)) 
Order By date DESC LIMIT 10

但它引发了警告:mysql_fetch_array():提供的参数不是有效的MySQL结果资源

如果我删除了cat='Science fiction' AND,它可以通过测试。

问题出在哪里?如果我想查询我想要的内容:首先全文搜索需要满足cat='Science fiction'。非常感谢。

4个回答

2
我不知道为什么删除cat LIKE 'Science fiction'后查询可以正常工作。按照书写方式,无论哪种情况下都不应该成功。 UNION要求查询的两部分产生具有兼容类型的相同列数。你的第一部分有4列,第二部分只有3列:
SELECT  title, content, date, cat FROM article1  
UNION
SELECT  title, content, date      FROM article3

@Joe Stefanelli,那么我遇到的问题该如何解决?如果我需要像这样的查询。 - cj333
1
@cj333:在查询的第二部分中添加一个cat列。如果article3中没有适合使用的列,则使用一个常量。 - dnagirl
1
@cj333:如果第二个查询不需要cat列,则将其修改为SELECT title,content,date,NULL AS cat... - Joe Stefanelli
@Joe Stefanelli,SELECT title,content,date,NULL AS cat...,它可以运行。谢谢... - cj333

2

如果 mysql_query 返回 FALSE,表示查询语句存在问题。如果你盲目地将 "FALSE" 传递给 mysql_fetch_array() 函数,那么我会预计看到这种错误。


2

您正在尝试将返回不同列数的结果集合并在一起。您的第一个查询返回4列(标题、内容、日期、类别),而第二个查询仅返回3列(标题、内容、日期)。每个查询必须返回相同数量的列。


0

尝试

cat LIKE 'Science fiction' 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接