0
在FTS的条件,我将如何做类似这样的:MySQL全文搜索。获取所有记录
SELECT * FROM students WHERE student_first_name LIKE "%" OR student_last_name LIKE "%" ...
我当前的查询是:
SELECT *
FROM
(SELECT cs.student_id,
cs.class_id,
s.student_id_no,
s.student_image,
s.student_first_name,
s.student_middle_name,
s.student_last_name,
s.student_year,
s.student_section,
s.student_email_address,
s.student_contact_no
FROM `class_students` cs
JOIN classes cls ON cs.class_id = cls.class_id
JOIN students s ON cs.student_id = s.student_id
WHERE cls.class_id = 1
AND cls.teacher_id = 1
AND is_enrolled = 1) AS s
WHERE MATCH(s.student_id_no, s.student_first_name, s.student_middle_name, s.student_last_name, s.student_email_address, s.student_contact_no) AGAINST ('*' IN BOOLEAN MODE)
,但它给了我一个错误。
#1064 - syntax error, unexpected $end, expecting FTS_TERM or FTS_NUMB or '*'
我试图删除IN BOOLEAN MODE
,它的工作原理,但没有记录被检索。
如果搜索文本为空,我想检索所有记录。
*
在AGAINST
子句中将与搜索字符串一起串联。
例如AGAINST('mysearch*' IN BOOLEAN MODE)
。顺便说一句,我正在使用PDO。
我的意思是,如果传递的搜索文本是空的,我想显示所有的记录。在LIKE条件下,WHERE字段LIKE'%'将检索所有记录。如果搜索文本不是空的,那么它将是'WHERE field LIKE'searchText%''并检索相关记录。我怎样才能做到类似于'FULLTEXT SEARCH'条件'MATCH ... AGAINST'? –
是的,但它是'...反对('term *'...)',但我不认为你可以简单地使用'*'',因此需要编写代码。 –
所以这是不可能的? :( –