MySQL LIKE 语句返回奇数结果
MySQL LIKE statement returning odd results
当我使用 AND 和 OR 对多个列执行 LIKE MySQL 查询时,我的过滤器在查询中的结果(例如按 Price 0 AND 50000 停止工作)。如果我从我的 LIKE 语句中删除 OR ,搜索就可以正常工作。如何使用 LIKE 语句正确搜索多个列?
这是一个 none 工作语句的示例,其中价格被忽略
SELECT *
FROM table
WHERE Price BETWEEN 0 AND 500000
AND class_id = 1
AND TotalSqFt BETWEEN 0 AND 999999999
AND Acres BETWEEN 0 AND 999999999
AND InclusionsFeatures LIKE '%horse%'
OR Remarks LIKE '%horse%'
ORDER
BY Price DESC
这条语句工作正常,但现在我只能在一列上执行 LIKE 查询。
SELECT * FROM table WHERE Price BETWEEN 0 AND 500000 AND class_id = 1 AND TotalSqFt BETWEEN 0 AND 999999999 AND Acres BETWEEN 0 AND 999999999 AND InclusionsFeatures LIKE '%horse%' ORDER BY Price DESC
您混合了 AND
和 OR
运算符。所以你可以正确地附上条件将工作。对于您的 OR
条件,您可以附上如下内容:
SELECT *
FROM table
WHERE (Price BETWEEN 0 AND 500000) AND
(class_id = 1) AND
(TotalSqFt BETWEEN 0 AND 999999999) AND
(Acres BETWEEN 0 AND 999999999) AND
(
(InclusionsFeatures LIKE '%horse%') OR (Remarks LIKE '%horse%')
)
ORDER BY Price DESC
在第一个语句中,当您在最后一个 AND 之后添加 OR 时,Mysql 会一直执行到 运行s OR。如果 OR 条件通过,则 AND 之前的所有内容将被忽略。所以查询 运行 不正确。
看看这个查询:
SELECT
*
FROM
TABLE
WHERE
Price BETWEEN 0
AND 500000
AND class_id = 1
AND TotalSqFt BETWEEN 0
AND 999999999
AND Acres BETWEEN 0
AND 999999999
AND (InclusionsFeatures LIKE '%horse%' OR Remarks LIKE '%horse%' )
ORDER BY
Price DESC
通过用括号将您的“喜欢”分组,它会检查括号内的条件与所有其他条件,并使用 AND。所以查询 return 匹配括号内条件和所有其他条件的数据。
当我使用 AND 和 OR 对多个列执行 LIKE MySQL 查询时,我的过滤器在查询中的结果(例如按 Price 0 AND 50000 停止工作)。如果我从我的 LIKE 语句中删除 OR ,搜索就可以正常工作。如何使用 LIKE 语句正确搜索多个列?
这是一个 none 工作语句的示例,其中价格被忽略
SELECT *
FROM table
WHERE Price BETWEEN 0 AND 500000
AND class_id = 1
AND TotalSqFt BETWEEN 0 AND 999999999
AND Acres BETWEEN 0 AND 999999999
AND InclusionsFeatures LIKE '%horse%'
OR Remarks LIKE '%horse%'
ORDER
BY Price DESC
这条语句工作正常,但现在我只能在一列上执行 LIKE 查询。
SELECT * FROM table WHERE Price BETWEEN 0 AND 500000 AND class_id = 1 AND TotalSqFt BETWEEN 0 AND 999999999 AND Acres BETWEEN 0 AND 999999999 AND InclusionsFeatures LIKE '%horse%' ORDER BY Price DESC
您混合了 AND
和 OR
运算符。所以你可以正确地附上条件将工作。对于您的 OR
条件,您可以附上如下内容:
SELECT *
FROM table
WHERE (Price BETWEEN 0 AND 500000) AND
(class_id = 1) AND
(TotalSqFt BETWEEN 0 AND 999999999) AND
(Acres BETWEEN 0 AND 999999999) AND
(
(InclusionsFeatures LIKE '%horse%') OR (Remarks LIKE '%horse%')
)
ORDER BY Price DESC
在第一个语句中,当您在最后一个 AND 之后添加 OR 时,Mysql 会一直执行到 运行s OR。如果 OR 条件通过,则 AND 之前的所有内容将被忽略。所以查询 运行 不正确。
看看这个查询:
SELECT
*
FROM
TABLE
WHERE
Price BETWEEN 0
AND 500000
AND class_id = 1
AND TotalSqFt BETWEEN 0
AND 999999999
AND Acres BETWEEN 0
AND 999999999
AND (InclusionsFeatures LIKE '%horse%' OR Remarks LIKE '%horse%' )
ORDER BY
Price DESC
通过用括号将您的“喜欢”分组,它会检查括号内的条件与所有其他条件,并使用 AND。所以查询 return 匹配括号内条件和所有其他条件的数据。