SELECT *
FROM combinazioni
WHERE (
sesso = '3'
OR sesso = 'f'
)
AND (
menopausa = '3'
OR menopausa = '1'
)
AND (
ipert_a = '3'
OR ipert_a = '1'
)
AND (
obesita = '3'
OR obesita = '1'
)
AND (
LOWER( i_alimento ) NOT LIKE '%ricotta%'
OR LOWER( ii_alimento ) NOT LIKE '%ricotta%'
OR LOWER( iii_alimento ) NOT LIKE '%ricotta%'
OR LOWER( iv_alimento ) NOT LIKE '%ricotta%'
OR LOWER( v_alimento ) NOT LIKE '%ricotta%'
)
ORDER BY rilevanza_1 DESC
我不明白这个问题。为什么这个查询不起作用? 我尝试在 PHPMyAdmin 中执行此代码,但它没有给我我想要的记录。该查询不会给出任何错误,但返回带有“ricotta”的记录。
我希望此查询向我显示在任何 i_alimento
中不有“ricotta”的记录。 , ii_alimento
, iii_alimento
, iv_alimento
, v_alimento
字段。
最佳答案
我很确定您需要 and
而不是 or
。但是,您应该使用 in
并简化整个 where
子句:
WHERE sesso IN ('3', 'F') AND
menopausa IN ('1', '3') AND
ipert_a IN ('1', '3') AND
obesita IN ('1', '3') AND
(LOWER(i_alimento) NOT LIKE '%ricotta%' AND
LOWER(ii_alimento) NOT LIKE '%ricotta%' AND
LOWER(iii_alimento) NOT LIKE '%ricotta%' AND
LOWER(iv_alimento) NOT LIKE '%ricotta%' AND
LOWER(v_alimento) NOT LIKE '%ricotta%'
)
这会检查五个“alimento”中的任何一个都不会出现“ricotta”。如果您使用或
,那么它只会检查其中最多一个不包含'ricotta'
。
此外,如果您确定确实需要 OR
,则应该在条件两边加上括号。
关于php - 这个带有 NOT LIKE 语句的 SQL 查询有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39435740/