我想做一个 sql 查询 l 但我如何在 SQL SELECT 语句中执行 IF...THEN ,例如:“从 table1,table2 中选择名称,其中 if(name like a then name like a) else name like b”
4 回答
您可以使用OR
连接两个布尔子句的运算符:
WHERE name LIKE ...
OR name LIKE ...
请注意,OR
它的优先级低于AND
,因此如果要将其与其他限制结合使用,则需要使用括号;例如:
WHERE ( name LIKE '%a%' OR name LIKE '%b%' )
AND id < 1000
SQL 不是一种编程语言,它没有 if、then、else 等。如果所需的条件可以用 AND 和 OR 等集合操作表示,那么您就可以做到。
否则,您需要编写存储过程、存储函数或存储例程。请参阅http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html,这将允许您编写程序代码。集合操作通常要快得多。
MySQL 支持IF
语句和CASE
语句。假设 a 和 b 是其中一个表中的列,并且 name 是另一个表中的列,请尝试这样的操作:
select name
from table1,table2
where name like
case
when name like a
then a
else b
end
还有一些示例小提琴:http ://sqlfiddle.com/#!2/c6ce6/1
您可能希望在 LIKE 查询中使用 '%' —— 如果是这样,则相应地 CONCAT。如果需要,可以将相同的逻辑用于字符串值。
请发布您的表结构、示例数据和所需的输出,以便我们能够完全理解您的问题并提供最佳答案。
曾经尝试过 mysql 存储过程http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx吗?
您可能想检查一下:使用“if”和“else”存储过程 MySQL
希望这可以帮助!:)