MYSQL如果不喜欢那样的话

时间:2013-02-18 02:46:35

标签: mysql sql case sql-like

我想做一个SQL查询l 但是如何在SQL SELECT语句中执行IF ... THEN,如:“ 从table1,table2中选择名称,其中if(名称就像一个名字,如a),其他名称如b“

4 个答案:

答案 0 :(得分:2)

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

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

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

WHERE ( name LIKE '%a%' OR name LIKE '%b%' )
  AND id < 1000

答案 1 :(得分:1)

SQL不是一种编程语言,它没有if,then,else等。如果所需的条件可以在AND和OR等集合操作中表达,那么你可以这样做。

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

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

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

答案 3 :(得分:0)

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

您可能想要查看一下:using "if" and "else" Stored Procedures MySQL

希望这有帮助! :)