0

我对建议文件的搜索工作正常。但是,我想从这个搜索中排除一个文件,但不知道如何将它添加到这个查询中:

$query = mysqli_query($con, "
SELECT *, MATCH(file_name_keyword) AGAINST('$file_name_keyword') 
FROM `uploaded` 
WHERE MATCH(file_name_keyword) AGAINST('$file_name_keyword') 
OR file_name_keyword REGEXP '.*($file_name_keyword).*' LIMIT 8");

这个AND id NOT IN (57)

我几乎尝试了所有方法,但它仍然不排除 id 57 处的行。

4

3 回答 3

2

只需将您现有的标准放在括号中,然后在子句NOT IN末尾添加。WHERE

SELECT *,MATCH(file_name_keyword) AGAINST('$file_name_keyword') 
FROM `uploaded` 
WHERE (MATCH(file_name_keyword) AGAINST('$file_name_keyword') OR file_name_keyword REGEXP '.*($file_name_keyword).*' )
AND id NOT IN (57)
LIMIT 8
于 2013-08-14T14:17:00.517 回答
1
$query = mysqli_query($con, "
SELECT *, MATCH(file_name_keyword) AGAINST('$file_name_keyword') FROM `uploaded` 
WHERE 
    (MATCH(file_name_keyword) AGAINST('$file_name_keyword') 
OR  file_name_keyword REGEXP '.*($file_name_keyword).*') 
AND id NOT IN (57)
LIMIT 8
");

您需要在 OR 条件周围使用括号,否则 mysql 会以错误的方式读取它。

于 2013-08-14T14:17:37.140 回答
1

尝试这个:

$query = mysqli_query($con, 
            "SELECT *, MATCH(file_name_keyword) AGAINST('$file_name_keyword') 
             FROM `uploaded` 
             WHERE 
               id NOT IN (57) 
               AND (
                 MATCH(file_name_keyword) AGAINST('$file_name_keyword') 
                 OR 
                 file_name_keyword REGEXP '.*($file_name_keyword).*'
               ) 
             LIMIT 8");
于 2013-08-14T14:18:57.740 回答