Mysql查询不在
我对建议文件的搜索工作正常。但是,我想从此搜索中排除一个文件,但不知道如何将其添加到此查询:Mysql查询不在,mysql,sql,Mysql,Sql,我对建议文件的搜索工作正常。但是,我想从此搜索中排除一个文件,但不知道如何将其添加到此查询: $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
$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");
此和id不在(57)
我几乎尝试了所有方法,但它仍然不排除id 57处的行。只需将现有条件放在括号中,然后在
WHERE
子句末尾添加not in
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
只需将现有条件放在括号中,然后在
WHERE
子句末尾添加notin
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将以错误的方式读取它
您需要在OR条件周围使用括号,否则mysql将以错误的方式读取它。尝试以下操作:
$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");
试试这个:
$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");
谢谢,格式和解释都很好。将选择最佳和更快的答案。最好指出,首先检查ID排除比检查57行的匹配更快。@PlamenNikolov这是基于什么?对于这个查询,WHERE子句的顺序应该绝对不会造成性能差异。@如果您是对的,那么在大多数情况下,优化器都应该为您这样做。只要把它作为一种好的做法提出来。@PlamenNikolov我认为
WHERE AND
将始终执行与WHERE AND
相同的操作,因此在这种情况下,担心顺序不是一种好的做法。谢谢,格式和解释都很好。将选择最佳和更快的答案。最好指出,首先检查ID排除比检查57行的匹配更快。@PlamenNikolov这是基于什么?对于这个查询,WHERE子句的顺序应该绝对不会造成性能差异。@如果您是对的,那么在大多数情况下,优化器都应该为您这样做。只要把它作为一个好的实践提出来。@PlamenNikolov我认为WHERE和的性能总是与WHERE和相同,所以在这种情况下,担心顺序不是一个好的实践。