Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么';使用NOT LIKE语句的SQL查询有何错误?_Php_Mysql_Sql - Fatal编程技术网

Php 什么';使用NOT LIKE语句的SQL查询有何错误?

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

我不明白这个问题。为什么这个查询不起作用? 我尝试在PHPMyAdmin中执行此代码,但它没有提供我想要的记录。该查询不提供任何错误,但返回带有“ricotta”的记录


我想让这个查询显示在
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 ;