如何在MySQL查询中使用OR并忽略第二个条件(如果第一个条件为真)?

问题描述:

我使用的是这样的查询:如何在MySQL查询中使用OR并忽略第二个条件(如果第一个条件为真)?

SELECT * FROM table1 WHERE countries LIKE '%US%' OR countries LIKE '%ALL%'; 

这将返回所有在国家列“US”或“ALL”的条目,但我希望它仅返回的行包含“美国”,如果找不到,则使用下一个条件并返回包含“ALL”的所有条件。

是否有可能只在一个查询中做到这一点?

我不认为这是可能的只有一个SQL查询。

如果你正在使用mysql,尽管我没有尝试这个,你可以试试这个。

SELECT IF(field1 is null, field2, field1) FROM table1; 

这里field1是你的“国家像美国”和field2是“像所有国家一样”。

通过使用子查询:

SELECT * 
FROM table1 
WHERE countries LIKE (CASE WHEN (SELECT COUNT(*) 
           FROM table1 
           WHERE countries LIKE '%US%') = 0 
          THEN '%ALL%' 
          ELSE '%US%' 
         END)