0

我想做一个 sql 查询 l 但我如何在 SQL SELECT 语句中执行 IF...THEN ,例如:“从 table1,table2 中选择名称,其中 if(name like a then name like a) else name like b”

4

4 回答 4

2

您可以使用OR连接两个布尔子句的运算符:

WHERE name LIKE ...
   OR name LIKE ...

请注意,OR它的优先级低于AND,因此如果要将其与其他限制结合使用,则需要使用括号;例如:

WHERE ( name LIKE '%a%' OR name LIKE '%b%' )
  AND id < 1000
于 2013-02-18T02:48:48.240 回答
1

SQL 不是一种编程语言,它没有 if、then、else 等。如果所需的条件可以用 AND 和 OR 等集合操作表示,那么您就可以做到。

否则,您需要编写存储过程、存储函数或存储例程。请参阅http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html,这将允许您编写程序代码。集合操作通常要快得多。

于 2013-02-18T02:55:24.877 回答
1

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。如果需要,可以将相同的逻辑用于字符串值。

请发布您的表结构、示例数据和所需的输出,以便我们能够完全理解您的问题并提供最佳答案。

于 2013-02-18T02:56:43.897 回答
0

曾经尝试过 mysql 存储过程http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx吗?

您可能想检查一下:使用“if”和“else”存储过程 MySQL

希望这可以帮助!:)

于 2013-02-18T03:02:40.120 回答