Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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
MYSQL中Case When语句使用四个条件_Mysql - Fatal编程技术网

MYSQL中Case When语句使用四个条件

MYSQL中Case When语句使用四个条件,mysql,Mysql,我想知道是否有一种方法可以在MYSQL中的case when语句中使用至少四个条件 CASE WHEN rank = 0 AND visibility != 'visibile' AND rank = 1 AND visibility = 'visibile' THEN 'Yes' WHEN rank = 1 AND visibility != 'visibile' AND

我想知道是否有一种方法可以在MYSQL中的case when语句中使用至少四个条件

CASE 
   WHEN 
       rank = 0 AND 
       visibility != 'visibile' AND 
       rank = 1 AND 
       visibility = 'visibile' 
   THEN 'Yes'
   WHEN 
       rank = 1 AND 
       visibility != 'visibile' AND 
       rank = 2 AND 
       visibility = 'visibile' 
   THEN 'Yes' 
   WHEN 
       rank = 2 AND 
       visibility != 'visibile' AND 
       rank = 3 AND 
       visibility = 'visibile' 
   THEN 'Yes' 
   ELSE null 
END 'Missing in Sequence'
当我使用两个以上的条件时,我似乎无法使它工作

有人有什么建议吗


谢谢

您的查询永远不会符合逻辑。因为,可见性='visibile'和可见性!='visibile在任何情况下都相互矛盾。因此,我试图通过创建嵌套的CASE语句来更正您的CASE语句。请尝试:

CASE WHEN 
     ((SELECT visibility  FROM table WHERE rank=0)!='visibile' AND 
     (SELECT visibility  FROM table WHERE rank=1)='visibile')
 THEN 'Yes'
 WHEN
 ((SELECT visibility  FROM table WHERE rank=1)!='visibile' AND 
     (SELECT visibility  FROM table WHERE rank=2)='visibile') 
 THEN 'Yes' 
 WHEN
     ((SELECT visibility  FROM table WHERE rank=2)!='visibile' AND 
     (SELECT visibility  FROM table WHERE rank=3)='visibile')  
 THEN 'Yes' 
ELSE 'Missing in Sequence' END

嗨,里格尔,我不认为或将在这种情况下工作,因为我试图在一个序列中找到丢失的实例,所以我需要它说和。此外,可见性=/!='“可见”的东西应该是合乎逻辑的,因为它适用于两个独立的等级,而不是同一等级。我想说,如果秩0不可见,但秩1可见,那么它在序列中丢失,等等。例如,秩0不可见,但秩1可见。当我使用你的建议时,我会得到一个肯定的答案,但那只是因为在你的代码中,如果满足一个条件,我总是会得到一个肯定的答案。但是,我想要一个“是”,因为排名0不可见,排名1可见。谢谢,但添加括号没有帮助。当我应该回答“是”时,我不会回答。当我应该得到“是”的时候,我总是得到一个空值。你能澄清一下,你所说的“我似乎不能让它工作”是什么意思吗?意思是它没有按预期工作。当我运行此查询时,当秩0不在字段中,秩1在字段中时,我得不到“是”。@Juergen我知道,例如,在这个表中,我看到的秩0是不可见的,但秩1是可见的,那么为什么在我运行此查询时,两者都返回为空?排名0应该是肯定的。我没有关于CASE WHEN语句的经验,但我猜,Rigel的语句是正确的:你的语句是矛盾的。你说,这是为两个不同的级别,但db怎么知道呢?当您说rank==1和rank==2时,这只是一个矛盾,因为数据库将其应用于同一行。我想,您希望将其应用于两个不同的行。我想,这是其中一种情况,必须进行联接,并且必须限定字段名,以便区分不同的字段,例如p.rank和q.rank。Post table scheme.@Juergen,它不应该知道,因为我说的是排名=0和可见性!='可见,排名=1,可见性='可见'?