Php 在MySQL中搜索两个不同列的表,尝试左连接获取语法错误?
下面是我的陈述(我得到一个语法错误) 基本上,我有两个表,一个有上传(我需要搜索它们的标题、描述和文件路径),第二个表有我也需要搜索它们标题的所有课程 我正试图用上面的字段和标题字段上的课程表在uploads表上进行全文搜索 我尝试了以下其他查询,但没有结果Php 在MySQL中搜索两个不同列的表,尝试左连接获取语法错误?,php,mysql,sql,full-text-search,Php,Mysql,Sql,Full Text Search,下面是我的陈述(我得到一个语法错误) 基本上,我有两个表,一个有上传(我需要搜索它们的标题、描述和文件路径),第二个表有我也需要搜索它们标题的所有课程 我正试图用上面的字段和标题字段上的课程表在uploads表上进行全文搜索 我尝试了以下其他查询,但没有结果 SELECT *, MATCH( U.title, U.description, U.filepath) AGAINST('ARTH 5180B asdfdsaf') FROM uploads AS U LEFT JOIN courses
SELECT *, MATCH( U.title, U.description, U.filepath) AGAINST('ARTH 5180B asdfdsaf')
FROM uploads AS U LEFT JOIN courses AS C ON U.Course_id = C.Id WHERE MATCH(C.title)
AGAINST('ARTH 5180B asdfdsaf')
非常感谢 在第一个查询中,正如Marc B所提到的,匹配的位置是错误的。在第二种情况下,您似乎正在使用左侧连接中的WHERE,而此时您应该使用AND,即:
SELECT *, MATCH( U.title, U.description, U.filepath) AGAINST('ARTH 5180B asdfdsaf')
FROM uploads AS U LEFT JOIN courses AS C
ON U.Course_id = C.Id
AND MATCH(C.title) AGAINST('ARTH 5180B asdfdsaf')
在第一个查询中,正如Marc B所提到的,匹配项位于错误的位置。在第二种情况下,您似乎正在使用左侧连接中的WHERE,而此时您应该使用AND,即:
SELECT *, MATCH( U.title, U.description, U.filepath) AGAINST('ARTH 5180B asdfdsaf')
FROM uploads AS U LEFT JOIN courses AS C
ON U.Course_id = C.Id
AND MATCH(C.title) AGAINST('ARTH 5180B asdfdsaf')
语法错误到底是什么?您的第一个查询是错误的,因为匹配项位于错误的位置。在第二次尝试中,它位于正确的位置。在第二次尝试中,我得到了一个名为“MATCH(U.title,U.description,U.filepath)的新列('ARTH 5180B asdfdsaf'),它具有wierd双值,这是因为您已将MATCH调用放入查询的字段列表中。你不必把它放在那里。它只出现在
where
子句中是非常好的。语法错误到底是什么?您的第一个查询是错误的,因为匹配项位于错误的位置。在第二次尝试中,它位于正确的位置。在第二次尝试中,我得到了一个名为“MATCH(U.title,U.description,U.filepath)的新列('ARTH 5180B asdfdsaf'),它具有wierd双值,这是因为您已将MATCH调用放入查询的字段列表中。你不必把它放在那里。它只出现在where
子句中是非常好的。