如何在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)