Php 什么';使用NOT LIKE语句的SQL查询有何错误?
我不明白这个问题。为什么这个查询不起作用? 我尝试在PHPMyAdmin中执行此代码,但它没有提供我想要的记录。该查询不提供任何错误,但返回带有“ricotta”的记录Php 什么';使用NOT LIKE语句的SQL查询有何错误?,php,mysql,sql,Php,Mysql,Sql,我不明白这个问题。为什么这个查询不起作用? 我尝试在PHPMyAdmin中执行此代码,但它没有提供我想要的记录。该查询不提供任何错误,但返回带有“ricotta”的记录 我想让这个查询显示在I\u alimento,ii\u alimento,iii\u alimento,iv\u alimento,v\u alimento字段中没有“乳清干酪”的记录。我很确定您想要的是和,而不是或。但是,您应该在中使用,并简化整个where子句: SELECT * FROM combinazioni WHE
我想让这个查询显示在
I\u alimento
,ii\u alimento
,iii\u alimento
,iv\u alimento
,v\u alimento
字段中没有“乳清干酪”的记录。我很确定您想要的是和
,而不是或。但是,您应该在
中使用,并简化整个where
子句:
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
这将检查五种“alimento”中的任何一种都不会出现“ricotta”。如果您使用或
,那么它只会检查其中最多有一个不包含'ricotta'
此外,如果您决定确实需要或,则应在条件周围加上括号。
您可以使用此查询
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%'
)
您也可以在函数中使用,以提供完美的结果
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 ;
希望对你有用。任何让我知道的问题都会对您有所帮助。您需要解释这句话,因为此查询不起作用。您可以添加示例数据、当前查询返回的内容以及您所期望的内容是否显示其中一个元素中包含“riccota”的记录?或者它没有给你显示没有的记录?非常感谢戈登。“ricotta”一词不必包含在所有四个字段中。你所需要的只是一个有“乳清干酪”的领域,我仍然有这个问题。您的解决方案不起作用。@MatteoRenzi是否要选择您提到的所有列中包含“ricotta”的所有记录以及其他条件?@Suraz我要选择其中一个字段中不包含“ricotta”的所有记录乳清干酪不一定在其中一块地里。@MatteoRenzi。Mateo,如果“不在其中一个字段”表示“不在任何字段”,则使用和。如果“不在其中一个字段中”表示“不在所有字段中”,则使用或。我想选择其中一个字段中不包含“ricotta”的所有记录。您的帮助仍然无效。您能否提供数据的外观?这将非常有助于为您提供一个解决方案解决方案是write,我在哪里写过或喜欢@Gordon Linoff的解决方案。非常感谢。那很好。如果你觉得它真的有帮助,请投票
SELECT *
FROM combinazioni
WHERE
sesso in ('3','f') AND
menopausa in ('3','1') AND
ipert_a in ('3','1') AND
obesita in ('3','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 ;